安全模式1
- 若创建对象时不使用new关键字,则可能会导致原本为对象的属性和方法创建到全局变量上
// 比如:
var instance = Book('title','name'); // 这里Book()函数在全局作用域中执行了,而如果Book没有返回值,则instance的值是undefined
- 避免创建无效对象的解决方法是:在定义构造函数时加入判断
var Book = function(title, time){
// 判断执行过程中this是否当前对象(如果是,说明是用new创建的)
if (this instanceof Book) {
this.title = tile;
this.time = time;
// 否则重新创建这个对象
} else {
return new Book(title, time);
}
}
- 出自《JavaScript设计模式》,张荣铭 著 ↩