我们在创建实例对象是,若忘了new
const Book1 = function (title, time, type) {
this.title = title
this.time = time
this.type = type
}
const book1 = Book1("JavaScript", "2021", "js")
在浏览器中,下述执行会依次返回 undefined JavaScript 2021 js
console.log(book1)
console.log(this.title)
console.log(this.time)
console.log(this.type)
因为没有new创建实例,相当于静态执行了Book1,this指向window, 其实是调用的window.title window.time window.type
所以可以设计一种安全模式, 防止忘了new
const Book2 = function (title, time, type) {
if(this instanceof Book2){
this.title = title
this.time = time
this.type = type
} else {
return new Book2(title, time, type)
}
}