Artikel ini memperkenalkan anda kepada kaedah Object.create() baharu dalam ECMAScript 5. Bagi mereka yang tidak tahu, anda dialu-alukan untuk mengumpul dan belajar~
ECMAScript 5 New Added Object.create()
kaedah untuk menyeragamkan konsep warisan prototaip [Pembelajaran yang disyorkan: Tutorial video JavaScript]
Penggunaan
var obj = Object.create({name: 'johan', age: 23}) // obj 继承了属性name 和 age var obj2 = Object.create(null) // obj2 不继承任何属性和方法 var obj3 = Object.create(Object.prototype) // 与 {} 和 new Object() 一个意思 var obj4 = Object.create({}, { property1: { value: true, writable: true } }) // 第二个参数与 Object.defineProperties() 一致 图解 Object.create 实现 function create(proto) { function F(){} F.prototype = proto return new F() }
Langkah Bab: function F(){}
Cipta fungsi Kerana huruf pertama ditulis dengan huruf besar, ia dianggap sebagai pembina Apabila anda mencipta fungsi F, terdapat hubungan ini antara pembina F dan prototaipnya objek. :
F.prototype === F.prototype; // 假设你把F.prototype当作一个值 F.prototype.constructor === F;
Langkah kedua: F.prototype = proto
Tugaskan F.prototaip kepada proto masuk, dengan itu memecahkan F.prototaip = F .prototype dan F.prototype.constructor = F, hubungan mereka adalah
Langkah 3: return new F()
Tafsiran langkah ketiga Agak mengelirukan , kerana ia melibatkan operasi baru Dalam perubahan baru objek, kami berkata bahawa baru akan mencipta objek dan menghalakan prototaip tersirat objek (__proto__) ke objek prototaip pembina dan memulakan nilai pembina. Kami juga akan memperkenalkan dalam prototaip seterusnya bahawa baharu ialah warisan prototaip tersirat dan Object.create ialah warisan prototaip eksplisit
Di sini, kami mentafsirkan kembali F() baharu mengikut cara baharu dilaksanakan. __proto__ contoh selepas F baharu menghala ke F.prototaip, dan nilai ini telah ditunjuk kepada proto yang diluluskan dalam langkah kedua, jadi terdapat F().__proto__ = proto baharu
< .
var obj = Object.create({name: 'johan'})
Prinsipnya adalah seperti ini, ia adalah untuk mencipta fungsi kosong (pembina) dan mengaitkan prototaipnya (melaksanakan warisan)
Apabila membaca kod sumber, anda akan sering melihat Object. create(null), use Ini memulakan objek baharu Adapun mengapa kaedah ini digunakan dan bukannya Objek baharu atau {}, ia adalah kerana kedua-dua nilai baharu dan literal diwarisi daripada pembina Objek, dan menggunakan Object.create( null), anda boleh mendapatkan fungsi tanpa sebarang pewarisan objekJika anda tidak percaya, anda boleh cuba mencetak obj
Atas ialah kandungan terperinci Ilustrasi kaedah Object.create dalam js (dengan contoh kod). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!