原型(prototype)
我们首先明确原型是一个对象,每个函数都有一个属性叫原型,这个属性指向一个对象。也就是说,原型是函数对象的属性,对象经过构造函数new出来,那么这个new出来的对象的构造函数有一个属性叫原型
//构造函数
function People(name){
this.name=name
}
var p1=new People('xie')
console.dir(People)
console.dir(p1)
console.dir(p1.constructor)
p1.constructor得到的是构造函数
//构造函数
function People(name){
this.name=name
this.showName=function(){
console.log(this.name)
}
}
var p1=new People('xie')
p1.showName()
console.dir(p1)
如果方法定义在构造函数中会造成性能浪费。因此一般将方法定义在原型下面,而属性定义在构造函数里。
//构造函数
function People(name){
this.name=name
}
People.prototype.showName=function(){
console.log(this.name)
}
var p1=new People('xie')
p1.showName()
console.dir(People.prototype.constructor===People) //true