を使用してからJavaScript関数の防止、私はおそらく何かが好きだろう:私は2つのプロパティを持つjavascriptの「クラス」を作成したい場合は、誤ってグローバルウィンドウ
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;
}
関数が 'new'なしで呼び出された場合、期待されるオブジェクトではなく' undefined'が返されるため、最小限のテストで非常に迅速にエラーを発見できます。エラーを隠そうとするよりも早く失敗する方が良い。 – RobG