個人的理解,有什麼不正確的請指教,共同學習 //stur不包含prototype屬性 由上面的原型組成的鏈狀結構叫原型鏈 ...
個人的理解,有什麼不正確的請指教,共同學習
//聲明一個構造函數Person
function Person(name,age){
this.name = name;
this.age = age;
}
//向構造函數的原型添加方法getName
Person.prototype.getName= function () {
console.log(this.name);
};
//new一個對象stru1 stru1就擁有getName方法
*所有通過構造函數new出來的對象都擁有getName方法
var stu1=new Person("xiaoli","25");
console.log(stu1.name);
console.log(stu1.age);
stu1.getName();
//為什麼都擁有getName方法呢
//因為__proto__,js在創建對象(不論是普通對象還是函數對象)的時候,都有一個叫做__proto__的內置屬性,
// 用於指向創建它的函數對象的原型對象prototype。
console.log(Person.prototype);//列印如下:
//Person.prototype裡面含有 getName方法 constructor 和__proto__
console.log(stu1.__proto__===Person.prototype); //true
console.log(Person.prototype.__proto__===Object.prototype);//true
console.log(Object.prototype.__proto__===null);//true
//Person.prototype.constructor 屬性指向構造函數本身
console.log(Person.prototype.constructor===Person);//true
console.log(stu1)//列印如下:
//stur不包含prototype屬性
由上面的原型組成的鏈狀結構叫原型鏈