JavaScript: Maksud bab Warisan dan bab Bahagian dalam Bahagian Yang Baik
给我你的怀抱
给我你的怀抱 2017-07-05 11:07:31
0
1
839

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

Bahagian

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;
};

Kami boleh memanggil kemungkinan pada mana-mana objek inpidual, memberikannya dengan pengendalian acara

    Kami juga boleh memanggilnya dalam fungsi pembina sebelum itu dikembalikan:
  1. eventuality(that)
  2. Dengan cara ini, pembina boleh memasang objek daripada set bahagian
penaipan longgar JavaScript adalah manfaat besar di sini kerana kami tidak dibebani dengan sistem jenis

yang mementingkan keturunan kelas watak
daripada kandungannya.
Jika kita mahu kemungkinan mendapat akses kepada keadaan peribadi objek, kita boleh luluskannya
himpunan saya

给我你的怀抱
给我你的怀抱

membalas semua(1)
我想大声告诉你

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 memudahkannya

.
var eventuality = function(that) {
    // 用于保存注册到 that 上的事件,闭包实现
    var registry = {};

    // 注册事件,将事件注册到 registry 中
    that.on = function() {};

    // 从 registry 中搜索对应的事情处理函数来执行
    that.fire = function() {};
};

Ia 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, seperti

function jsonlity(that) {
    that.toJson = function() {};
}

Kemudian kami mempunyai kelas Boo, yang sebagai tambahan kepada beberapa cirinya sendiri, juga memerlukan acara dan ciri JSON, jadi ini boleh dilakukan dalam pembinanya

function Boo() {
    // Boo 自身的构造内容
    // ......

    eventuality(this);  // 添加事件功能
    jsonlity(this);     // 添加 JSON 支持
}

Dua 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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!