构造函数--原型
使用构造函数构造对象时,我们可以将一些共有的属性或方法放在prototype中,从而达到节省内存的作用
- new对象时发生了什么?
- 新建一个空对象
- 空对象.__proto__=构造函数.prototype
- this指向空对象
- 根据上下文绑带赋值,将对象属性都放入空对象中
- return这个对象
- 一般用法举例
function Person(name){
this.name=name
this.age=18
}
var nicoz=new Person('nicoz')
Person.prototype.sayHi=function(){
console.log('Hi~')
}
console.log(nicoz)
nicoz.sayHi()
注意点1:构造函数如果返回的不是对象,会忽略掉return的东西,而返回默认返回的对象
function Person(name){
this.name=name
this.age=18
return name
}
var nicoz=new Person('nicoz')
console.log(nicoz)
注意点2:构造函数如果返回了其他对象,那么此时返回对象.__proto__不再等于构造函数.prototype,此时再去调用prototype上的方法会报错
function Person(name){
this.name=name
this.age=18
return {name:name}
}
var nicoz=new Person('nicoz')
console.log(nicoz)
Person.prototype.sayHi=function(){
console.log('Hi~')
}
console.log(nicoz.__proto__==Person.prototype)
nicoz.sayHi()