javascript 構造函數屬性避免污染全局對象

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

在初始化變量時,如果我們忘記使用 new 關鍵字,構造函數內的屬性將會污染到全局對象上,如果屬性名與已有方法名重名時,更會出現難以查找的 bug,現在我們來修改構造函數避免此問題:

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容