国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - Isu dengan ini dan pembina dalam JS
我想大聲告訴你
我想大聲告訴你 2017-06-26 10:53:14
0
5
910
function People() {
}
People.prototype.say = function () {
    alert("hello");
}

function Student() {
}
Student.prototype = new People();
var superSay = Student.prototype.say;

Student.prototype.say = function () {
    superSay.call(this);            // 為什么會是"hello"?
    alert("stu-hello");
}
var s = new Student();
s.say();

Seperti yang diulas dalam kod, siapa yang superSay.call(this)為什么會是People.prototype.say函數(shù)被調用?this tunjuk?

我想大聲告訴你
我想大聲告訴你

membalas semua(5)
曾經(jīng)蠟筆沒有小新

Ini menunjukkan Student{}類,這個你可以在superSay.call(this)上面加一行console.log(this) untuk pengesahan.

Kemudian, mari lihat kod ini

Student.prototype = new People();

Untuk kemudahan penjelasan kemudian, saya memanggil contoh yang dibuat oleh Orang baharu() di sini Instance X. new People()創(chuàng)建的實例稱為實例X。
由于superSay = Student.prototype.say,因為上面的Student.prototype = new People();,所以其中Student.prototype實例X。
所以實際上superSay調用的是實例Xsay,而并非People.prototype.saySebab superSay = Student.prototype.say, kerana Student.prototype = new People();, jadi di mana Student.prototype adalah InstanceX.

Jadi sebenarnya superSay memanggil say Instance X, bukan People.prototype.say.

People.prototype.say,主要還是原型鏈的問題。實例X是People類的一個實例,所以實例X的所有方法會從People類的原型鏈“繼承”(用繼承這個詞,但是實際上JS的原型鏈和繼承還是有些區(qū)別的)。所以實例X.say如果沒有針對實例X重寫say方法,那么實例Xsay就和People.prototype.sayMengapa anda fikir ia sama dengan memanggil

.

superSay.call(this)這個里面的call,只是改變了this的上下文而已。但是由于superSay實例X.say,這個方法里根本沒有this,所以thisSelain itu,

pengubahsuaian konteks tidak menjejaskan keputusan operasi.

??
迷茫

Masalah ini sering dihadapi dalam js

代言

Pendapat peribadi: Mari kita bincangkan tentang urutan carian untuk mencari kaedah sebut: s——student.prototype——people.prototype——Objek telah sedia dan berhenti mencari. Digabungkan dengan kod anda, katakan hanya akan menemui student.prototype. Di sini anda boleh menukar kod anda terlebih dahulu supaya kelihatan seperti ini untuk menjadikannya lebih jelas:

    People.prototype.say = function () {
        console.log(123);
    }
    People.prototype.jiao = function () {
        console.log(456);
    }
    Student.prototype.say = function () {
          console.log(321)
    }

Yang lain kekal tidak berubah. Pada masa ini, s.say() - mengeluarkan 321, s.jiao() - mengeluarkan 456. Kemudian kembali ke kod anda, kerana anda telah mengatasi kaedah sdudent.prototype.say, jadi kod ini akan dilaksanakan

    Student.prototype.say = function () {
        superSay.call(this);            // 為什么會是"hello"?
        alert("stu-hello");
    }

Ayat pertama superSay.call(this), pertama sekali, superSay ialah pembolehubah, dan jenis pembolehubah ialah fungsi Anda boleh menambah sekeping kod console.log(typeof supperSay) selepas var superSay = Student.prototype.say. , jadi anda hanya Panggil fungsi ini, dan pembolehubah ini menyimpan Student.prototype.say. Laksanakan kepada var superSay = Student.prototype.say. Sebenarnya, nilai yang diberikan di sini ialah People.prototype.say. Perkara ini serupa pada halaman 166-167 Elevation. Mengenai perkara ini, anda boleh menukar kedua-dua bahagian kod anda kepada ini, meninggalkan yang lain tidak berubah.

    var superSay = Student.prototype.say;
    Student.prototype = new People();

Ralat akan dilaporkan apabila memanggil superSay pada masa ini, kerana apabila var superSay = Student.prototype.say dilaksanakan; student.prototype hanya mempunyai satu atribut pembina dan tiada kaedah sebut. Kemudian kembali ke kod anda dan People.prototype.say akan diberikan kepada superSay

綜上第一句代碼會輸出hello,而你的call根本沒什么用
第二句就不用說了。
關于this其實我也不是特別清楚。我原來還認為console.log(this)會輸出S,結果輸出student,還需繼續(xù)學習。
我想大聲告訴你

Ikat ini dalam pembina superSay kepada Student.prototype.

洪濤

Adakah anda tidak takut bahawa poster itu akan tertipu oleh semua ceramah di tingkat atas?

Dalam programnya, stuSay menunjuk kepada fungsi objek fungsi tanpa nama () {alert("hello");}. , ia akan sentiasa menjadi seperti ini, untuk siapa ini menunjuk ke dalam badan fungsi, sila baca buku Badak...

Poster tidak akan mengalami masalah ini selepas membaca bahagian fungsi buku Rhinoceros Adapun banyak perkara karut di tingkat atas, jangan buat poster itu pening

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