0

私が理解している限り、次のステートメントは等しいです

  • object.property
  • オブジェクト[「プロパティ」]

そのため、いくつかのテストを行ってきましたが、functionP でドット表記を正しく機能させる方法がわかりません。

私は通常、このページのどこかでダンプツールのスクリーンダンプを使用して何が起こっているかを確認しますが、機能のプロパティは表示されません。

なぜ私はこれを行うことができます

alert(functionE());     // returns key and date
alert(functionE.keyE);  // returns key and date

function functionE()
{
    var myKey = "keyE";

    functionE[myKey] = myKey + " +++ " + Date();
    return functionE[myKey];
}

しかし、これではありません

alert(functionP());     // returns key and date
alert(functionP.keyP);  // RETURNS UNDEFINED

function functionP()
{
    var myKey = "keyP";

    functionP.myKey = myKey + " +++ " + Date();
    return functionP.myKey;
}

これができるうちに

alert(functionT());     // returns key and date
alert(functionT.keyT);  // returns key and date

function functionT()
{
    functionT.keyT = "keyT" + " +++ " + Date();
    return functionT.keyT;
}
4

1 に答える 1

4

はではなくfunctionP.myKeyと同等だからです。functionP['myKey']functionP[myKey]

functionEあなたがやろうとしていることをする正しい方法です。

ただし、次のようなこともできます。

function functionX() {
    var key = 'keyP';
    var value = 'foo';

    this.__defineGetter__(key, function() {
        return value;
    });

    this.__defineSetter__(key, function(val) {
        value = val;
    });
}

そして今、それは動作します:

> var o = new functionX()
> o.keyP
"foo"

__defineGetter__標準の JavaScriptで__defineSetter__はないため、使用しません。を使用しfunctionEます。

于 2013-04-24T19:30:46.350 に答える