在javascript中从对象值执行一个函数

时间:2016-02-09 21:03:08

标签: javascript backbone.js

我试图从每个对象键执行一个函数,这里是代码。

var testObj = { text: "this is text" , alltext: "this is all text" };

function text() {
    alert("this is test function for first value");
}

function alltext() {
    alert("this is test function for first second!");
}

for (item in testObj) { 
    console.log(item);
    item();
}

这让我觉得item不是一个功能。

请访问此链接查看原始代码。我正在使用Backbone.js创建一个表单。代码已注释。

http://vianx.com/tst/script2.js

在这种情况下,“fieldConstructor”不是函数。

5 个答案:

答案 0 :(得分:0)

所以我相信你错误地认为字典在javascript中是如何工作的。第一个值是一个键,它将始终是一个字符串值,可以执行您希望的操作

var testObj = [[text, "this is text"] , [alltext, " thi is all text" ]];

function text () {
  alert( "this is test function for first value");
}

function alltext () {
  alert( "this is test function for first second!" );
}


for ( index in testObj ) {
   
  console.log(index);
  testObj[index][0]();
}

答案 1 :(得分:0)

您应该使用JavaScript eval功能:

Select * from DATABASE

答案 2 :(得分:0)

或者您可以在对象中引用这些功能

var testObj = { text: text , alltext : alltext };

function text() {
  alert( "this is test function for first value");
}

function alltext() {
  alert( "this is test function for first second!" );
}


for ( item in testObj ) {

  console.log(item);
  testObj[item]();
}

答案 3 :(得分:0)

构造testObj是这样的:

var testObj = { 
    text: function(){alert("this is test function for first value")} ,
    alltext : function(){alert("this is test function for first second!")} 
};

然后只需致电testObj.a();

答案 4 :(得分:0)

您可以通过将动态函数附加到窗口对象来完成。

var testObj = { text: "this is text", alltext: " thi is all text" };

for (var item in testObj) {
    window[item] = function () {alert("hello world")};
}

console.log(window['text'],window['alltext']);

window.text();
window.alltext();

也可以在不使用“窗口”的情况下调用这些函数。即:

text();
alltext();

或者,如果您想要动态调用属性名称的函数...

var testObj = { text: "this is text", alltext: " thi is all text" };

window['text'] = function() {
    alert("this is test function for first value");
}

window['alltext']  = function (){
    alert("this is test function for first second!");
}

for (var item in testObj) {
    window[item]();// = function () {alert("hello world")};
}