javascript - Beberapa soalan tentang pelaksanaan fungsi extend dalam corak reka bentuk js
typecho
typecho 2017-06-15 09:23:00
0
1
941

Dalam Bab 4.2.2 corak reka bentuk JavaScript, fungsi lanjutan ditulis seperti berikut

function extend(subClass,superClass){
    var F = function(){};
    F.prototype = superClass.prototype;
    subClass.prototype = new F();
    subClass.prototype.constructor = subClass;
}

Soalan saya ialah tentang fungsi F ini. Jika perhubungan pewarisan dilaksanakan dengan cara ini, maka rantai prototaip objek terakhir yang diwujudkan oleh subKelas hendaklah seperti yang ditunjukkan di bawah:

Tetapi sebenarnya, output konsol chrom adalah seperti yang ditunjukkan di bawah

Fungsi F tidak ditunjukkan dalam penyahpepijatan chrom.

Soalan saya ialah mengapa F tiada dalam rantaian prototaip?

typecho
typecho

Following the voice in heart.

membalas semua(1)
習慣沉默
Test.__proto__ === subClass.prototype
Test.__proto__.__proto__ === subClass.prototype.__proto__ === superClass.prototype

Ini adalah rantai prototaip Fungsi kosong F hanyalah pembina sementara, pada dasarnya hanya untuk merealisasikan subClass.prototype.__proto__ === superClass.prototype,本来这样的实现方式subClass.prototype = new superClass()就可以实现,但是使用空函数可以避免一些问题,比如说superClassbanyak atribut

.
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan