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

sumber:php.cn
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