如果有时候我们忘记对构造函数使用new的话,构造函数的this将指向window
function Person(){
this.name = 'Julie';
}
var good_moring = Person();
console.log(good_moring); //输出undefined
console.log(window.name); //输出Julie
遵循命名约定一定程序上有助于避免忘记使用new所带来的问题,但命名约定也只是一种建议,并不能强制保证正确的行为。
板栗:
function Waffle(){
if( !(this instanceof Waffle) ){
return new Waffle();
}
this.name = 'carl';
}
var first = new Waffle(),
second = Waffle();
console.log(first.name); //carl
console.log(second.name); //carl
本文探讨了在JavaScript中,若构造函数未使用new关键字调用时,this将指向全局对象(如浏览器中的window)。通过实例演示了如何通过检查this的实例类型来确保构造函数即使在未使用new的情况下也能返回正确的对象实例。
763

被折叠的 条评论
为什么被折叠?



