如何获取函数中键的名称

JavaScript - How to get the name of the key inside a function

本文关键字:函数 何获取 获取      更新时间:2023-09-26

我有一个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

您必须向函数的接口提供这种类型的信息:

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对象放在一种"状态"。

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

http://jsfiddle.net/3SwyM/2/

虽然它在静态名称上起作用,但是如果你的observe()工作得很好,那么你也可以达到

的结果

回答我自己的问题,因为我刚刚准备好了我的样本。感谢Yoshi的评论,这促使我深入挖掘…

我在这里张贴了示例实现的链接,如果有人感兴趣…代码是错误的,但演示了数据绑定,我试图做POC…

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

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

感谢大家的评论。这只是原始的/有bug的代码。我会在接下来的几天里润色一下…