Rumah > Artikel > hujung hadapan web > Benang patah, prototaip dan rantai prototaip dalam JavaScript
Hubungan antara prototaip dan rantai prototaip berjalan melalui objek dalam JavaScript
, dan segala-galanya dalam JavaScript
ialah objek, jadi prototaip dan rantai prototaip adalah konsep yang agak penting Hari ini akan membawa anda melaluinya Bangun dan lihat prototaip dan rantai prototaip dalam JavaScript
.
1 Fahami konsep (tahu sahaja dua kata nama ini)
Prototaip (<em>prototype</em>
)
Rantai prototaip (__<em>proto__</em>
)
2 Fahami perkaitan
prototype => 函数的一个属性 : 同时也是一个 对象{} (称之为原型对象亦可) __proto__ => 对象Object的一个属性 : 同时也是一个 对象{} (__proto__也就是[[Prototype]])
Nota: __proto__ objek menyimpan prototaip pembina objek
a. 🎜> b. Mengisytiharkan objek
function Test() { } //prototype 是函数的一个属性 console.dir(Test); console.log(Test.prototype); // Test.prototype也是一个对象 console.log(typeof Test.prototype);
3. >
const test = new Test(); console.log(test); //验证test为一个对象 console.log(typeof test); //__proto__是对象的一个属性 console.log(test.__proto__); console.log(Test.prototype); //对象的__proto__属性存储着Test.prototype console.log(test.__proto__ === Test.prototype); // test.__proto__也是一个对象 console.log(typeof test.__proto__);
function Test() {} console.log(Test.prototype); //验证函数是否有prototype属性 let test = new Test(); console.dir(test.__proto__); //验证对象是否有__proto__属性 console.log(test.__proto__ === Test.prototype);//验证对象的__ptoto__是否保存着该对象的构造函数的prototype console.log(Test.prototype.__proto__ === Object.prototype);//Test.prototype(是一个对象)的__proto__属性是否是对象的原型属性 console.log(Object.prototype.__proto__);//原型链的顶层没有__proto__属性 null
4. Ringkasan
function Test(){} let test =new Test(); test.a= 10; //test.__proto__ === test.constructor.prototype test.__proto__.b1=11;//对象的__proto__属性存储着对象构造函数的prototype属性 Test.prototype.b2=11; test.__proto__.__proto__.c1=12; Object.prototype.c2=12; console.log(test); console.log(Test.prototype); console.log(Object.prototype.__proto__); /*逐层解析 * test{ * a = 10 * __proto__:Test.prototype{ * b = 11 * __proto__:Object.prototype{ * c = 12 * X__prototype__:null * } * } * } * * */
Tidak disyorkan untuk menggunakannya secara langsung
Lawati.
boleh diringkaskan secara ringkas sebagai mengambil <code>__proto__
prototaip sebagai nod prototaip dan <code>__proto__
<span style="color: rgb(0, 0, 0);">prototype</span>
Setiap objek contoh (<span style="color: rgb(0, 0, 0);">__proto__</span>
objek
<p>prototaip<code><span style="color: rgb(0, 0, 0);">object</span>
). Objek prototaip juga mempunyai objek prototaipnya sendiri (<span style="color: rgb(0, 0, 0);">__proto__</span>
__proto__<span style="color: rgb(0, 0, 0);">prototype</span>
), lapisan demi lapisan sehingga objek prototaip objek adalah <span style="color: rgb(0, 0, 0);">__proto__</span>
null<span style="color: rgb(0, 0, 0);">null</span>
. Mengikut definisi, <span style="color: rgb(0, 0, 0);">null</span>
null
tidak mempunyai prototaip dan berfungsi sebagai pautan terakhir dalam rantai prototaip ini. <span style="color: rgb(0, 0, 0);">someObject.[[Prototype]]</span>
<span style="color: rgb(0, 0, 0);">someObject</span>
<span style="color: rgb(0, 0, 0);">someObject.[[Prototype]]</span>
simbol digunakan untuk menunjuk kepada <span style="color: rgb(0, 0, 0);">__proto__</span>
someObject.[[Prototype]]
<p>__proto__<code><span style="color: rgb(0, 0, 0);">Object.prototype</span>
(sifat bukan standard JavaScript tetapi dilaksanakan oleh banyak penyemak imbas). <span style="color: rgb(0, 0, 0);">Object</span>
<span style="color: rgb(0, 0, 0);">[[Prototype]]</span>
Perwakilan harta<span style="color: rgb(0, 0, 0);">func</span>
Objek<span style="color: rgb(0, 0, 0);">prototype</span>
objek prototaip.
Atas ialah kandungan terperinci Benang patah, prototaip dan rantai prototaip dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!