PHPStormは、String
というオブジェクトの作成について警告します。新しいインスタンスのそれぞれには、で宣言されていないので、locale
という変数は含まれません。以下のコードはそれを説明する必要があります。
var index = 1;
function test(value) {
\t document.body.innerHTML += index++ + " " + value;
document.body.innerHTML += "</br>";
}
test(String.locale); // 1 - check if locale exists
String.locale = "locale";
test(String.locale); // 2 - should return "locale"
String.prototype.locale = "other locale";
test(String.locale); // 3 - should strill return "locale"
test(String.prototype.locale); // 4 - should return "other locale"
test("".locale); // 5 - "other locale"
test(String("").locale); // 6 - "other locale"
test((new String("")).locale); // 7 - "other locale"
String.locale = "locale";
test((new String("")).locale); // 8 - still "other locale", "locale" variable is not used when creating objects from "String" thus it's lost in all instances of this constructor
注:
PHPStormはのみのプリミティブについて警告ようだ:
- 数
- 文字列
- ブール
- ヌル(nullではない、ヌル)
それはIDE固有の動作です。カスタムオブジェクトについては通知しません。
EDIT いくつかの研究の後、私は間違っていると理解しました。私の答えはPHPStormの警告に関連していないようです。
プリミティブ変数を作成し、そのプロパティをprimitive.locale = "en-GB"
のように設定し、primitive.locale
でアクセスしようとすると、定義されません。それは警告があなたに伝えようとしていることです。私はまだ立っプリミティブについて語っ何
、PHPStormは約Number
、String
、Boolean
とnull
を通知します。以下
チェックコード:
var someBoolean = true;
someBoolean.locale = "en-GB";
document.body.innerHTML += someBoolean.locale;
document.body.innerHTML += "</br>";
var someString = "test";
someString.locale = "en-GB"
document.body.innerHTML += someString.locale;
「String.locale」をどこでどのように設定するかといったようなコンテキストを追加できますか? – Linek
@Linekが更新されました。 – Brett