cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Novice, izinkan saya bertanya soalan asas tentang pembangunan prototaip Bolehkah anda memberi saya sedikit panduan?

1. Baris ketiga kod tidak difahami.
Baris ketiga harus dilaksanakan Tambahkan data ke super_robot sebagai objek prototaip. super_robot添加 data作为原型对象。
那为什么不是 SuperRobot.__proto__=data;
而是say.__proto__=data; Kalau begitu kenapa bukan SuperRobot.__proto__=data;
tetapi say.__proto__=data ??

2.🎜
function SuperRobot(data) {
    var say = function() { return "Hello World!"; };
    say.__proto__=data;
    return say;
}

var data = { name:"atom", age: 5};
var super_robot = SuperRobot(data);

console.log(super_robot());            //Hello World!
console.log(super_robot.age);        //5
console.log(typeof super_robot);     //function
黄舟黄舟2812 hari yang lalu537

membalas semua(3)saya akan balas

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-18 11:00:53

    function Fun(){
        var a = {};
        return a;
    }
    var super = Fun();

    Siapa yang patut ditambah pada masa inisuper等于什么?
    是不是等于Fun内声明的a?
    所以__proto_.

    balas
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-18 11:00:53

    Menulis seperti ini bersamaan dengan menulis semula rantaian prototaip super_robot, yang tidak boleh dianggap sebagai sambungan Pada asalnya, super_robot.__proto__ menghala ke Function.prototype boleh dikatakan bahawa selepas menulis semula, super_robot telah pun Ia tidak lagi boleh dianggap sebagai fungsi sebenar Kini ia tidak boleh menggunakan kaedah pada prototaip Fungsi, seperti memanggil, memohon, mengikat, dll.

    .
    console.log( super_robot instanceof Function ); // false
    console.log( super_robot.call ); // undefined
    

    Jika anda melanjutkannya, anda harus menulis say.__proto__.name = nama, say.__proto__.age = umur, yang bersamaan dengan Function.prototype.name = nama, Function.prototype.age = umur, tetapi ini akan membuat semua instance fungsi Kedua-dua atribut ini diakses, jadi secara amnya tidak disyorkan untuk melanjutkan seperti ini

    balas
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-18 11:00:53

    SuperRobot hanyalah fungsi kilang, apa yang dikembalikan adalah teras

    balas
    0
  • Batalbalas