Rumah > hujung hadapan web > tutorial js > Benang patah, prototaip dan rantai prototaip dalam JavaScript

Benang patah, prototaip dan rantai prototaip dalam JavaScript

灭绝师太
Lepaskan: 2021-11-04 12:00:01
asal
1550 orang telah melayarinya

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)

  1. Prototaip (<em>prototype</em>)

  2. Rantai prototaip (__<em>proto__</em>)

2 Fahami perkaitan

prototype  => 函数的一个属性         : 同时也是一个 对象{} (称之为原型对象亦可)

__proto__ => 对象Object的一个属性   : 同时也是一个 对象{}   (__proto__也就是[[Prototype]])
Salin selepas log masuk

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

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

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
    *                 }         
    *        }
    *     }
    *
    * */
Salin selepas log masuk

Tidak disyorkan untuk menggunakannya secara langsung
Lawati.

  • boleh diringkaskan secara ringkas sebagai mengambil <code>__proto__prototaip sebagai nod prototaip dan <code>__proto__

    kod> sebagai rantaian Prototaip.
  • <span style="color: rgb(0, 0, 0);">prototype</span>Setiap objek contoh (<span style="color: rgb(0, 0, 0);">__proto__</span>objek

    ) mempunyai sifat peribadi (dipanggil
  • __proto__
  • ) menunjuk pada objek prototaip pembinanya (<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> someObject.[[Prototaip]]<span style="color: rgb(0, 0, 0);">someObject</span><span style="color: rgb(0, 0, 0);">someObject.[[Prototype]]</span> simbol digunakan untuk menunjuk kepada prototaip someObject , <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>

  • Object.prototype
  • <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.

[[Prototaip]] objek contoh yang dicipta oleh pembina menghala ke fungsiprototaip

>. Video yang disyorkan: "Pengenalan Pantas JavaScript_Jade Girl Heart Sutra Series" , "Tutorial Video Dugu Jiujian (6)_jQuery"

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!

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