如何获取函数中键的名称
JavaScript - How to get the name of the key inside a function
我有一个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的代码。我会在接下来的几天里润色一下…
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 从Jquery函数中获取一个变量
- 从javascript中调用的Android函数中获取值,并将其返回给js
- 在函数中获取正确的作用域(不使用that=this)
- Yii ajaxbutton : 如何在成功回调函数中获取 $(this)
- 如何在嵌套函数中获取$(this)
- 从从字符串创建的函数中获取参数列表
- Javascript:在函数外获取“this”
- 表单操作值未从attr()函数中获取
- 我无法从javascript函数中获取返回代码
- 从函数内部获取函数的名称
- 从字符串的 JS 函数中获取函数参数
- 如何在 JavaScript 函数中获取传递给引导模式的参数
- 如何从javascript函数中获取值
- 如何从节流函数中获取最后一个值
- 在Javascript函数中获取Java对象属性
- JSON.Stringify replacer函数无法获取键值
- 修改序列化表单函数以获取输入ID而不是名称
- 在Javascript函数中获取MVC控制器名称