Ilustrasi kaedah Object.create dalam js (dengan contoh kod)

藏色散人
Lepaskan: 2022-11-25 21:16:24
ke hadapan
1503 orang telah melayarinya

Artikel ini memperkenalkan anda kepada kaedah Object.create() baharu dalam ECMAScript 5. Bagi mereka yang tidak tahu, anda dialu-alukan untuk mengumpul dan belajar~

Ilustrasi kaedah Object.create dalam js (dengan contoh kod)

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()
}
Salin selepas log masuk

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;
Salin selepas log masuk

Ilustrasi kaedah Object.create dalam js (dengan contoh kod)

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

Ilustrasi kaedah Object.create dalam js (dengan contoh kod)

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

Ilustrasi kaedah Object.create dalam js (dengan contoh kod)< .

var obj = Object.create({name: &#39;johan&#39;})
Salin selepas log masuk
Ini dia obj mewarisi objek {name: johan}. Bagi F.prototype = {name: 'johan'}, selepas memanggil Object.create, kerana ada tidak Apabila seseorang menggunakan fungsi F dan sampah dikumpul oleh enjin, ia menjadi obj.__proto__ = {name: 'johan'}

Dengan cara ini, "warisan prototaip" diturunkan

Ilustrasi kaedah Object.create dalam js (dengan contoh kod) 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 objek

Jika 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!

Label berkaitan:
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!