原型
定義:原型是function對象的一個(gè)屬性,它定義了構(gòu)造函數(shù)制造出的對象的公共祖先。通過該構(gòu)造函數(shù)產(chǎn)生的對象,可以繼承該原型的屬性和方法。原型也是對象。
特點(diǎn)
1.利用原型特點(diǎn)和概念,可以提取共有屬性
原型的增刪改查必須用Car.prototype.屬性來改
Car.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','prof.li');
var car1=new Car('blue','prof.ji');
Car.prototype{
height=1400;//共有屬性
lang=4900;//共有屬性
carName='BMW';//共有屬性
}
function Car(color,owner){
this.owner=owner;
this.color=color;
}
var car =new Car('red','prof.li');
var car1=new Car('blue','prof.ji');
2.對象查看對象的構(gòu)造函數(shù) --->constructor
這個(gè)對象的constructor是本身存在的,也可以手動修改 07
function Person(){
}
function Car(){
}
Car.prototype = {
constructor:Person
}
var car = new Car();
3.對象如何查看原型 --->隱式原型proto
Person.prototype.name = 'sunny';
function Person(){
}
var person = new Person();//person.name=cherry
Person.prototype={//改了原型,換了個(gè)新對象
name:'cherry'
}
比如:引用值的相互賦值
var obj={name:'a'}
var obj1=obj;//obj1.name=a
obj={name:'b'};
Person.prototype.name = 'sunny';
function Person(){
}
var person = new Person();//person.name=sunny
Person.prototype.name='cherry';//在原有的基礎(chǔ)上改了屬性值
.查找屬性,如果本身沒有,則會去proto中查找,也就是構(gòu)造函數(shù)的顯式原型中查找,如果構(gòu)造函數(shù)中也沒有該屬性,因?yàn)闃?gòu)造函數(shù)也是對象,也有proto,那么會去它的顯式原型中查找,一直到null,如果沒有則返回undefined