三、强制使用new的模式
要知道,构造函数,只是一个普通的函数,只不过它却是以new的方式调用。如果在调用构造函数时忘记制定new操作符会发生什么?这并不会导致语法或运行时错误,但可能导致逻辑错误或意外的行为发生。发生这类问题是因为您忘记使用new操作符,从而导致结构函数中的this指向了全局对象(在浏览器中,this会指向window)。
// 构造函数 function Waffle() { this.tastes = 'yummy'; } // 定义一个新对象 var good_morning = new Waffle(); console.log(typeof good_morning); // "object" console.log(good_morning.tastes); //"yummy" // 反模式 // 忘记使用new操作符 var good_morning_1 = Waffle(); console.log(typeof good_morning_1); // "undefined" console.log(window.tastes); //"yummy" console.log(good_morning_1.tastes); //"Error"