首页 > 代码库 > javascript构造函数强制使用new

javascript构造函数强制使用new

如果有时候我们忘记对构造函数使用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