原型:
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__指向的对象不一样了