定义:
原型是function对象的一个属性,它定义了构造函数制造出来的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。
obj.prototype –原型
利用原型特点和概念,可以提取共有属性
eg:1
2
3
4
5
6
7
8
9Car.prototype.height = 1400;//统一属性放在原型中
Car.prototype.lang = 4900;
Car.prototype.carName = "BMW";
function Car(color,owner){
this.owner = owner;
this.color = color;
}
var car = new Car('red','LBW');
var car1 = new Car('green','xxx');
原型的增、删、改、查
1.修改属性:obj.prototype.属性名 = “xxx”;
2.查找属性:obj.prototype.属性名;
3.增加属性:obj.prototype.新属性名 = “xxx”;
4.删除属性:通过delete(不能通过对象操作原型)
查看对象的构造函数 constructor
constructor属性是系统给每个对象自带的属性,记录了这个对象的构造函数,可以手动修改
隐式属性__proto__
我们之前说,一个对象创建出来,会默认创建一个空对象,但实际上,里边是有系统自带的属性的,当我们找一个对象上的属性不是该对象自身就有的时候,会通过__proto__找到该原型。也可手动修改。1
2
3var this = {
__proto__:Object.prototype
}
eg1:1
2
3
4
5
6
7Person.prototype.name = 'sunny';
function Person(){
}
var person = new Person();
Person.prototype.name='cherry'
console.log(person.name)//结果为cherry,不为sunny,直接操作了属性
eg2:1
2
3
4
5
6
7
8
9Person.prototype.name = 'sunny';
function person(){
}
var person = new Person();
Person.prototype = {
name:'cherry'
}
console.log(person.name)//结果为sunny,不为cherry,已经创建对象之后又修改原型
eg3:1
2
3
4
5
6
7
8
9Person.prototype.name = 'sunny';
function person(){
}
Person.prototype = {
name:'cherry'
}
var person = new Person();
console.log(person.name)//结果为cherry,更改原型之后才创建对象