Node.js new、prototypeと_proto__
3320 ワード
一、Personオブジェクトを構築する(Javaにおけるパラメトリック構造関数に相当)
二、オブジェクトインスタンスがthisポインタを暗黙的に渡す
三、newとprototype
1、まとめ:
2、prototype.key=valueオブジェクトElfを拡張する
3、インスタンス._proto__ 方法と方法prototypeは同じオブジェクトへの参照を指す
4、インスタンス._proto__ 方法と方法prototypeはそれぞれ2つの異なる辞書テーブルに属している{}
5、対象例を辞書表として見ることができる
6、呼び出し値の順序
function person(name, sex, age, addr, salary) {
this.name = name;
this.sex = sex;
this.age = age;
this.addr = addr;
this.salary = salary;
}
二、オブジェクトインスタンスがthisポインタを暗黙的に渡す
person.prototype.func_pro=function () {
console.log(this);
};
let Sakura =new person("Sakura"," ",16,"FateStayNight",10000000000);
let Illyasviel= new person("Illyasviel "," ",14,"FateStayNight",9999999999);
Sakura.func_pro();
Illyasviel.func_pro();
console.log("-------------------------------------------------------" + "
");
三、newとprototype
1、まとめ:
console.log("new prototype");
//1、let variable ={};
//2、nodejs __proto__
// :
// __proto__
// __proto__( ): prototype( )
// __proto__ prototype
//3、 this
//4、
2、prototype.key=valueオブジェクトElfを拡張する
function Elf(name) {
this.name =name;
console.log("Elf\t"+name);
}
console.log(" prototype.key=value Elf");
Elf.prototype.love=function () {
console.log("%s love 'DATE A LIVE!'", this.name);
};
let Yuzuru = new Elf("Yuzuru");
let Kaguya = new Elf("Kaguya");
Yuzuru.love();
Kaguya.love();
console.log("-------------------------------------------------------" + "
");
3、インスタンス._proto__ 方法と方法prototypeは同じオブジェクトへの参照を指す
console.log(" .__proto__ .prototype ");
console.log(Yuzuru.__proto__);
console.log(Elf.prototype);
console.log("-------------------------------------------------------" + "
");
let func_data =function(){
console.log("func_data");
};
func_data.prototype.func_test=function(){
console.log("func_test",this);
};// .__proto__ .prototype
console.log(" .__proto__ .prototype ");
console.log(Yuzuru.__proto__);
console.log(Elf.prototype);
console.log("-------------------------------------------------------" + "
");
let func_data =function(){
console.log("func_data");
};
func_data.prototype.func_test=function(){
console.log("func_test",this);
};
4、インスタンス._proto__ 方法と方法prototypeはそれぞれ2つの異なる辞書テーブルに属している{}
console.log(" .__proto__ .prototype 2 {}");
let data =new func_data();
data.name="Innocence";
data.__proto__.func_test();
data.func_test();
console.log("-------------------------------------------------------" + "
");
5、対象例を辞書表として見ることができる
// data 1
console.log(" data 1 ");
// this
data.func_test();
// this data this data._proto_ test_func
data.__proto__.func_test.call(data);
console.log("-------------------------------------------------------" + "
");
6、呼び出し値の順序
data.func_test=function () {
console.log("new func_test",this);
};
data.func_test();
//data.key_func key __proto__