如果我想创建一个具有两个属性的 javascript“类”,我可能会执行以下操作:
var Person = function (firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
};
然后我可以按如下方式创建一个新人:
var p = new Person("John", "Doe");
console.log(p.firstName + " " + p.lastName);
在这一点上,一切都很好。但是,如果有人意外(或故意)调用以下命令:
Person("Mary", "Smith"); // without "new"
突然之间,firstName
并且lastName
是全局窗口上下文的一部分,并且可能会搞砸整个页面。
console.log(window.firstName); // logs "Mary"
在构建“类”时,有没有一种好的方法可以防止这种情况发生Person
?显然,如果有人想在 javascript 中破坏某些东西,他们可以做到,但我只是在寻找最佳实践。
我可以在班级的顶部抛出这样的东西,但我不知道这是否是一个好的答案:
if (this === window) {
console.log("You are fail");
return;
}