0

オブジェクト内で関数宣言を使用しようとしていますが、今のところ使用できません。オブジェクト内で関数式を使用できることはわかっていますが、代わりに関数宣言を使用することは可能ですか?

これは機能します:

 var objContainer = {};
 objContainer.callback = function(data) {
 objContainer.server_date = data.responseXML.documentElement.getAttribute("answer");
 alert("Object should have XML response: " + objContainer.server_date);
 };

これはしません:

 var objContainer = {};
 function objContainer.callback(data) {
 objContainer.server_date = data.responseXML.documentElement.getAttribute("answer");
 alert("Object should have XML response: " + objContainer.server_date);
 }

また、オブジェクト リテラル表記を使用して関数宣言を使用しようとしましたが、これも失敗します。

 var objContainer = {
   function callback(data) {
   var objContainer.server_date = data.responseXML.documentElement.getAttribute("answer");
   alert("Object should have XML response: " + objContainer.server_date);
   }
 };
4

3 に答える 3

2

オブジェクト内で関数式を使用できることはわかっていますが、代わりに関数宣言を使用することは可能ですか?

いいえ。式のみです。

最も近い方法は、スコープ内に関数宣言を置き、その関数を名前でオブジェクト プロパティに割り当てることです。

function foo () { }
var bar = { func: foo };
于 2013-03-27T17:32:52.410 に答える
1

私があなたを正しく理解しているなら、「obj.prop = function() { .. }」の代わりに「function funcname() { .. }」構文を使用したいだけですか? これを行う唯一の方法は、次のようなものを使用することです。

function objContainer() {
    this.callback = callback;
    function callback(data) {
        alert(data);
    }
};

var myObjectContainer = new objContainer();
myObjectContainer.callback('hello world');

「varname = new funcname()」を使用して関数を呼び出すと、オブジェクトが作成されます。

于 2013-03-27T17:49:16.760 に答える
0

最後の1つの例では、これがあなたが望むものだと思います:

var objContainer = {
  callback : function(data) {
 var objContainer.server_date = data.responseXML.documentElement.getAttribute("answer");
  alert("Object should have XML response: " + objContainer.server_date);
                         }
                  };
//  then you could use the object like this:
objContainer.callback();
于 2013-03-27T17:38:09.040 に答える