1

javascript クロージャーがあり、メソッド内にありgetresult()ます。object 内のプロパティを呼び出したいquo

var quo = function (test) {
        talk: function () {
            return 'yes';
        }
        return {
            getresult: function () {
                return quo.talk();
            }
        }
    }
var myQuo = quo('hi');
document.write(myQuo.getresult());

内部からgetresult()、どのようにプロパティを呼び出すことができますtalkか?

4

2 に答える 2

4

構文が間違っていて、quo 参照から talk を呼び出すことはできません。talk は外部からアクセスできません。talk から quo を呼び出したい場合は、返されたオブジェクトに参照を追加する必要があります。

var quo = function (test) {
    function talk() {
        return 'yes';
    }
    return {
        getresult: function () {
            return talk();
        },
        talk: talk
    }
}
于 2012-07-20T00:20:10.953 に答える
0

quoはオブジェクトではなく、単純な関数であり、プロパティはありません (技術的には、持つこともできますが、ここでは当てはまりません)。

var quo = function(test) {
     function talk() {
          return 'yes';
     }
     /* OR:
     var talk = function() {
          return 'yes';
     }; */

     return {
         getresult: function() {
             // in here, "quo" references the closure function.
             // "talk" references the local (function) variable of that "quo" function
             return talk();
         }
     }
}
var myQuo = quo('hi');

myQuo.getresult(); // "yes"

オブジェクトのプロパティ " talk"を取得したい場合は、これを使用する必要があります。myQuo

var quo = function(test) {
    return {
        talk: function() {
             return 'yes';
        },
        getresult: function() {
             // in here, "quo" references the closure.
             // "this" references current context object,
             // which would be the the object we just return (and assign to "myQuo")
             return this.talk();
        }
    };
}
var myQuo = quo('hi');

myQuo.getresult(); // "yes"

キーワードの詳細についてはthis、 MDNを参照してください。

于 2012-07-20T00:27:40.210 に答える