js的原型
原型:
1定义:原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。
通过该构造函数产生的对象,以继承该原型的属性和方法。原型也是对象。
2.利用原型特点和概念,可以提取共有属性。
3.对象如何查询原型 --> 隐式属性__proto__
4.对象如何查询对象的构造函数 --> constructor
例:
Person.prototype.lastName = "Deng";
function Person(name){this.name = name;
}
var person = new Person("ken");
console.log(person.lastName);//Deng
原型的过程:
Person.prototype.name = "sunny";function Person(){//就是这样的过程//var this = {// __proto__ : Person.prototype//}
};var person = new Person();
console.log(person.name); //sunny//原型的属性改变,person对象是否会改变
Person.prototype.name = "cherry";
//会改变
console.log(person.name); //cherry
原型整个对象改变:
Person.prototype.name = "sunny";function Person(){//var this = {__proto__:Person.prototype}
}var person = new Person();Person.prototype = { name : "cherry"
};var person2 = new Person();
console.log(person.name) //sunny
console.log(person2.name) //cherry
答案显然易见:不会改变。
//类似于这下面这样
var obj = {name:"a"};
var obj1 = obj;
obj = {name:"b"}; Person.prototype = {name:"a"};
__proto__ = Person.prototype;
Person.prototype = {name:"b"};
因为Person.prototype和__proto__指向的对象不一样了