JavaScript - 如何在函数内获取键的名称

时间:2011-12-12 09:22:02

标签: javascript

我有一个javascript文字对象,如下所示..

var db = new Observer();
var user = {
   firstName: db.observe("abc"),
   lastName: "xyz",
   middleName: db.observe("test")
};

注意:“firstName”值是一个函数调用db.observe(“abc”),它接受一个参数。

var Observer = function() {
    this.observe = function (value) {  // INITIAL value of the field
        // HOW WILL I GET "key, for e.g. firstName" key here so that i can associate "value" with it.

    return this;
    }
}

我的要求是获取密钥的名称,在本例中为observe()函数中的'firstName'。

或者请随意推荐替代品以实现相同目的。

注意:这与我正在尝试的小型MVVM框架有关,而且我现在陷入困境。

让我知道这是否可以用JS。

REF:knockoutjs会做这样的事情...... http://knockoutjs.com/examples/helloWorld.html

3 个答案:

答案 0 :(得分:1)

您必须向该函数的界面提供该类型的信息:

var observation = db.observe("abc");
var other_observation = db.observe("test");
var user = {
   firstName: ( todayIsFriday ? observation : other_observation ),
   lastName: "xyz",
   middleName: ( todayIsFriday ? other_observation : observation )
};

你真的不能指望解析器在observe函数中知道什么用作“键”,你基本上需要先在Javascript中实现一个时间机器。

因此,您确实需要将其作为额外参数传递,或者首先将db对象置于某种“状态”。

答案 1 :(得分:0)

你可以通过for..in来实现。见下面的演示

http://jsfiddle.net/3SwyM/2/ 虽然它适用于静态名称,但如果您的observe()效果很好,那么您也可以实现结果

答案 2 :(得分:0)

回答我自己的问题,因为我准备好了我的样品。感谢Yoshi的评论,这个评论让我深入挖掘......

我在这里发布了示例实现的链接,如果有人感兴趣的话......代码是错误的,但证明了数据绑定,我试图做POC ......

这是jsfiddle网址...

http://jsfiddle.net/rajeshpillai/xQkXk/22/

尝试更改文本框中的值,依赖对象会自动更新....

感谢大家的评论。这只是原始/错误,代码..将在接下来的几天内对此进行修改......