2

オブジェクトの繰り返しから、関数を呼び出してデータをパラメーターとして送信しようとしていますが、試してみるとエラーが発生します..

オブジェクトキーを使用して関数を呼び出す適切な方法は何ですか..?

私の試み:

var x = function(msg){
    console.log(msg);
}
var y = function(msg){
    console.log(msg);
}

    var obj = {x:"i am x", y:"i am y"}

    var all = function(){
        $.each(obj,function(key,value){
           [key](value);
        })
    }

    all();

いずれかが正しいアプローチを見つけてください..ここにjsfiddleリンクがあります

4

6 に答える 6

8

この方法を試してください

var funcs = {
    x: function(msg){
        console.log(msg);
    },
    y: function(msg){
        console.log(msg);
    }
};

var obj = {x:"i am x", y:"i am y"}

var all = function(){
    $.each(obj,function(key,value){
       funcs[key](value);
    })
}

all();

ここにあなたのフィドルがありますhttp://jsfiddle.net/9XqeJ/1/

于 2013-06-21T11:38:06.187 に答える
1

これはあなたが望むことをしません..

var x = function(msg){
    console.log(msg);
}
var y = function(msg){
    console.log(msg);
}

2 つの独立した関数を定義します。

var obj = {x:"i am x", y:"i am y"}

キー「x」と「y」を持つオブジェクトを定義します。それらは、定義した関数から完全に独立しています。

あなたはこれを行うことができます:

var self = this;
this.x = function(msg){
    console.log(msg);
}
this.y = function(msg){
    console.log(msg);
}

var obj = {x:"i am x", y:"i am y"}

var all = function(){
    $.each(obj,function(key,value){
        self[key](value);
    })
}

all();

キーで名前が付けられた関数を呼び出す。 フィドル

于 2013-06-21T11:41:04.363 に答える
0

変数のスコープがグローバルの場合、それを使用できますが、最善の方法ではありません。

http://jsfiddle.net/PWtEG/

 x = function (msg) {
     console.log(msg);
 }
 y = function (msg) {
     console.log(msg);
 }

 var obj = {
     x: "i am x",
     y: "i am y"
 }

 var all = function () {
     $.each(obj, function (key, value) {
         window[key](value);
     })
 }

 all();
于 2013-06-21T11:45:09.493 に答える
-1

実装するコードはこちら

var key = "foo";
obj[key](1, 2, 3);
obj[key].call(obj, 1, 2, 3);
obj[key].apply(obj, [1, 2, 3]);

function foo() { console.log(arguments); }

// 1. directly
foo(1, 2, 3);

// 2. trough Function.call()
foo.call(this, 1, 2, 3);

// 3. trough Function.apply()
var args = [1, 2, 3];
foo.apply(this, args);

SO Answer: php call_user_func に相当する JavaScript

于 2013-06-21T11:42:09.287 に答える