function ClassA() {
this.weight = 100;
this.age = 0;
}
var classA = ClassA();
console.log(classA); // undefined
console.log(window.weight); // 100
console.log(window.age); // 0
在初始化變量時(shí)益缠,如果我們忘記使用 new 關(guān)鍵字,構(gòu)造函數(shù)內(nèi)的屬性將會(huì)污染到全局對(duì)象上,如果屬性名與已有方法名重名時(shí)翠肘,更會(huì)出現(xiàn)難以查找的 bug,現(xiàn)在我們來(lái)修改構(gòu)造函數(shù)避免此問(wèn)題:
function ClassA() {
if (this instanceof ClassA) {
this.weight = 100;
this.age = 0;
}else{
return new ClassA;
}
}
var classA = ClassA();
console.log(classA); // ClassA {weight: 100, age: 0}
console.log(window.weight); // undefined
console.log(window.age); // undefined