Rumah > Soal Jawab > teks badan
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
??
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
曾经蜡笔没有小新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_
.
我想大声告诉你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
我想大声告诉你2017-05-18 11:00:53
SuperRobot hanyalah fungsi kilang, apa yang dikembalikan adalah teras