1

codecademy.comのコースをフォローしているJavaScriptは初めてです。最近、彼らは括弧表記を導入しました(より単純なドット表記とは対照的です)。ドット表記では参照できないものを参照できるので、メリットがあると思います。ただし、特定の状況で引用符を使用することになっている理由がわかりません。

例えば:

var suitcase = {
    shorts: "purple"
};
if (suitcase.hasOwnProperty("shorts")) {
    console.log(suitcase.shorts);
}

なぜショーツはその行の周りに引用符が必要なのif (suitcase.hasOwnProperty("shorts")) {ですか?私は何かを文字列として指定する引用符に慣れています。shortsはスーツケースオブジェクトのプロパティなので、引用符なしで参照されると思います。これまでJavaScriptのルールをよく理解してきましたが、これは明確に説明されていなかったので、混乱しました。

4

5 に答える 5

2

このことを考慮:

var suitcase = {
    shorts: 'purple',
    shorts: purple
}

はい、「ショーツ」に2回割り当てています。ただし、最初の行では、値がshorts オブジェクト キーに'purple'ある STRING を割り当てています。2 行目は、まだ定義されていないpurpleという名前の VARIABLE を割り当てています。purple

コンテキストは、Javascript のすべてです。shortsJS インタープリターは、そこでオブジェクト キーを定義していることを認識しているため、この部分を引用する必要はありません。しかしpurple、 が色を表す文字列なのか、名前がたまたまpurple. そのため、必要なコンテキストを提供するために引用符が付けられています。

についても同様ですhasOwnProperty。shorts が引用符で囲まれていない場合、未定義の変数として扱われます。引用符で囲まれている場合、それは文字列です。

于 2012-04-30T04:27:10.423 に答える
1

すべてのオブジェクトのプロパティの名前は単なる文字列です。プロパティは、。のような文字列名でいつでも参照できますa["b"]。唯一の例外は、を使用する場合です.。その場合、a.bはプロパティです。これはと同等a["b"]です。それ以外の場合は、文字列を使用してプロパティ名を参照してください。

hasOwnProperty通常の方法です。shortsではなくパスした場合"shorts"、JSはshorts変数として扱われます。

于 2012-04-30T04:24:57.010 に答える
1

あなたの例は次と同じです:

    suitcase = new Object();  
    suitcase.shorts = 'purple';
    suitcase.hasOwnProperty('shorts');   //returns true  

qoutesで囲まれていないjavascriptの引数/パラメータは可変であることを常に覚えておいてください。実際にはJavaScriptだけでなく、すべての言語。変数と混同しないでください。

Javascript は変数を必要としますshorts

    var shorts = 'shorts';
    suitcase.hasOwnProperty(shorts);   //returns true

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

于 2012-04-30T05:28:18.717 に答える
0

the hasOwnProperty() function needs the name of the property you want to check for. Therefore it needs to be passed in as a string. If you leave off the quotes then javascript will assume you're passing a variable containing the property name.

于 2012-04-30T04:25:37.653 に答える
0

引用符がないと、javascript は shorts をオブジェクトとして解釈し、shorts は未定義であるため、取得します。hasOwnProperty 関数は、文字列型のプロパティ名を探しています。

ReferenceError: shorts is not defined

それで

suitcase.shorts

「紫」を返す

shorts !== suitcase.shorts

shorts は suitcase.shorts と同じオブジェクトではありません。実際、宣言するまでオブジェクトではありません。

shorts = "brown"

これにより、shorts の値が「brown」に設定されますが、suitcase.shorts は「purple」のままです。

これで解決することを願っています。

于 2012-04-30T04:29:19.717 に答える