Saya telah membaca JavaScript: The Good Parts baru-baru ini ia santai dan menyeronokkan setakat ini, dan kandungannya sangat bagus. Tetapi apabila saya sampai ke bahagian Warisan
, saya benar-benar terkedu dan tidak tahu apa yang diperkatakan
Kita boleh mengarang objek daripada set bahagian Contohnya, kita boleh membuat fungsi
yang boleh menambah ciri pemprosesan acara mudah pada mana-mana objek Ia menambahkan kaedah hidup, kaedah kebakaran dan pendaftaran acara peribadi.
var eventuality = function (that) {
var registry = {};
that.fire = function (event) {
// Fire an event on an object. The event can be either
// a string containing the name of the event or an
// object containing a type property containing the
// name of the event. Handlers registered by the 'on'
// method that match the event name will be invoked.
var array,
func,
handler,
i,
type = typeof event === 'string' ?
event : event.type;
// If an array of handlers exist for this event, then
// loop through it and execute the handlers in order.
if (registry.hasOwnProperty(type)) {
array = registry[type];
for (i = 0; i < array.length; i += 1) {
handler = array[i];
// A handler record contains a method and an optional
// array of parameters. If the method is a name, look
// up the function.
func = handler.method;
if (typeof func === 'string') {
func = this[func];
}
// Invoke a handler. If the record contained
// parameters, then pass them. Otherwise, pass the
// event object.
func.apply(this,
handler.parameters || [event]);
}
}
return this;
};
that.on = function (type, method, parameters) {
// Register an event. Make a handler record. Put it
// in a handler array, making one if it doesn't yet
// exist for this type.
var handler = {
method: method,
parameters: parameters
};
if (registry.hasOwnProperty(type)) {
registry[type].push(handler);
} else {
registry[type] = [handler];
}
return this;
};
return that;
};
eventuality(that)
yang mementingkan keturunan kelas watak
daripada kandungannya.
Jika kita mahu kemungkinan mendapat akses kepada keadaan peribadi objek, kita boleh luluskannya
himpunan saya
Inggeris "bahagian" bermaksud bahagian Saya tidak tahu bagaimana untuk menerangkan maksudnya dengan tepat di sini. Secara kasarnya, beberapa "bahagian" boleh digabungkan pada objek melalui beberapa kaedah Dalam fungsi pembinaan, sudah tentu, ia digabungkan dalam
.this
上。比如eventuality
, untuk memudahkannyaIa akan menjadi objek yang diluluskan
that
添加on()
和fire()
两个方法用于事件的注册和触发,而闭包变量registry
Digunakan untuk menyimpan acara berdaftar (fungsi pengendalian). Fungsi ini, sudah tentu, menambah fungsi pengendalian acara pada objek.Katakan kita mempunyai fungsi lain yang perlu ditambah pada objek, seperti penyirian kepada JSON, iaitu, menambah kaedah
toJson()
untuk mensiri objek semasa ke dalam rentetan JSON, sepertiKemudian kami mempunyai kelas
Boo
, yang sebagai tambahan kepada beberapa cirinya sendiri, juga memerlukan acara dan ciri JSON, jadi ini boleh dilakukan dalam pembinanyaDua ayat terakhir hendaklah disebut bahagian mengarang
Supplement
Kaedah ini akan menetapkan salinan fungsi kaedah yang berkaitan untuk setiap objek dan tidak boleh menggunakan semula kaedah yang ditentukan, jadi ia masih memakan sumber secara relatif. Walau bagaimanapun, perenggan ini harus diperkenalkan dalam tutorial untuk memperkenalkan titik pengetahuan pewarisan berikut.
Bercakap tentang warisan, sintaks ES2015 sudah menyokong kelas dan lanjutan, yang lebih ketat dan lebih mudah daripada kaedah pembina sebelumnya, jadi dalam bahagian ini, saya cadangkan anda mempelajari lebih lanjut tentang sintaks kelas baharu dan jangan terlalu terjerat dengan yang lama. sintaks kelas. Pada masa hadapan, apabila anda mempunyai asas tertentu dan mempunyai masa, jika anda berminat, anda boleh mengkaji mekanisme prototaip JS dan pelaksanaan OO berdasarkan mekanisme prototaip.