javascript prototype constructorについて話します.
3303 ワード
もっと読む
私のブログを見てくれてありがとうございます.これからはjavascript prototypeに関する内容を説明します.知識が限られていますので、間違ったところがあれば、よろしくお願いします.
prototypeはまとめて何文になりますか?
prototypeはjavaオブジェクトの一つの静的属性に相当するので、新たに生成されたオブジェクトごとにこのプロトタイプの属性が共有されています.プロトタイプに対して該当する修正をすれば、新生オブジェクトのアドレス参照の属性(Aray、{}など)は影響しますが、値参照の属性には影響がありません.
例:
私のブログを見てくれてありがとうございます.これからはjavascript prototypeに関する内容を説明します.知識が限られていますので、間違ったところがあれば、よろしくお願いします.
prototypeはまとめて何文になりますか?
prototypeはjavaオブジェクトの一つの静的属性に相当するので、新たに生成されたオブジェクトごとにこのプロトタイプの属性が共有されています.プロトタイプに対して該当する修正をすれば、新生オブジェクトのアドレス参照の属性(Aray、{}など)は影響しますが、値参照の属性には影響がありません.
例:
function ClassA(){ }
function Pro(){
this.p1 = 'p1';
this.fun1 = function(){
console.log('fun1');
};
this.arr = [];
}
var pro = new Pro()
ClassA.prototype = pro;
var a1 = new ClassA();
var a2 = new ClassA();//a1,a2 prototype(pro)
a1.p1 = 'a1p1';
console.log('a1.p1='+a1.p1+'| a2.p1='+a2.p1);// a1.p1 a2.p1
a1.arr.push(1,2,3);
console.log('a1.arr='+a1.arr+'| a2.arr='+a2.arr);// , a1.arr a2.arr
constructorについては、2つの話があります.1、constructor属性は常に現在のオブジェクトを作成する構造関数を指しています.2、各関数にはデフォルトの配相prototypeがあります.このプロトタイプのconstructorはこの関数を指しています.
//constructor
//--- prototype, prototype constructor
console.log('--Example_One--');
var Person = function(name){
this.name = name;
};
Person.prototype.getName = function(){
return this.name;
}
var p = new Person('zhang');
console.log(Person.constructor === Function); //true Person Function
console.log(p.constructor === Person); //true p Person
console.log(Person.prototype.constructor === Person);//true prototype constructor
console.log(p.constructor.prototype.constructor === Person);//true
// prototype ,
console.log('---Example_Two---');
var Student = function(name){
this.name = name;
};
Student.prototype = {
getName:function(){
return this.name;
}
}
var s = new Student('zhen');
console.log(Student.constructor === Function );
console.log(s.constructor === Student);
console.log(Student.prototype.consturctor === Student);
console.log(s.constructor.prototype.constructor === Student);
//
console.log('---Example_Three---');
var Animal = function(name){
this.name = name;
};
/*
Animal.prototype = {
getName:function(){
return this.name;
}
}
*/
Animal.prototype = new Object(
{
getName:function(){
return this.name;
}
}
);
Animal.prototype.constructor = Animal; // prototype constructor
var a = new Animal('zhen');
console.log(Animal.constructor === Function );
console.log(a.constructor === Animal);
console.log(Animal.prototype.constructor === Animal);
console.log(a.constructor.prototype.constructor === Animal);
もし間違いがあったら皆さんに教えてください.