简单的来说 new 是生成一个实例的语法糖,帮助我们减少一些代码。
没有 new 时我们如何生成实例?
- 使用 this 关键字来实现。
function People(name) {
this.name = name
this.__proto__ = People.prototype
return this
}
People.prototype = {
sayName: function() { console.log(this.name) }
}
let ben = People.call({}, 'ben')
- 或不使用 this,代码能够更好的阅读。
function People(name) {
let obj = {}
obj.name = name
obj.__proto__ = People.prototype
return obj
}
People.prototype = {
sayName: function() { console.log(this.name) }
}
let ben = People('ben')
使用 new 来生成实例
function People(name) {
this.name = name
}
//推荐写法
People.prototype.sayName = function(){
console.log(this.name)
}
/* 或者
People.prototype = {
constructor: People,
sayName: function() { console.log(this.name) }
}
*/
let ben = new People('ben')
由上述例子 new 将帮助我们完成以下一些操作:
- 创建临时对象,使用 this 就可以访问。
- 绑定原型,new 指定原型了为 prototype。
- return 临时对象。
完。