JavaScript:获取对象的评估属性
JavaScript: Getting evaluated properties of an object
我有两个类似的对象:
var person = {
fname: 'John',
lname: 'Doe'
};
var myObj = {
fullName: function () {
return person.fname + ' ' + person.lname;
}
};
我需要的是一个像这样的对象——myObj
,但经过评估:
var someObj = {
fullName: 'John Doe'
};
由于myObj
将被传递给模板引擎,所以它无论如何都是JSON所必需的,所以我找到了一种使用JSON.stringify
:的方法
function replacer(key, value) {
if (typeof value == 'function') {
return value.call();
}
return value;
}
var someObj = JSON.stringify(myObj, replacer);
虽然这很有效,但我觉得它很脆弱,我想对它做一些研究。像replacer
这样的函数有一个特殊的名称吗?有没有replacer
更成熟的实现附带的库?
您可以使用对象文字中的正确语法使fullName
成为"getter"属性。
var person = {
fname: 'John',
lname: 'Doe',
// fullName will be evaluated on property access
get fullName() {
return this.fname + ' ' + this.lname;
}
};
document.querySelector("pre").textContent = JSON.stringify(person, null, 4);
<pre></pre>
这是ECMAScript 5的一个特性,因此它在旧的浏览器(如IE8及更低版本)中不可用。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- JavaScript:获取对象的评估属性
- JavaScript 评估 - 如何为对象属性赋值
- ASP WebForms在返回后重新评估属性
- 等待评估的属性
- 如何评估潜在未声明变量的属性
- 具有数据绑定URL的ExtJS存储未重新评估数据属性
- 在JavaScript中定义的Angular.js模型中,需要将一个属性作为函数进行评估
- 子属性更改时重新评估对象绑定
- Thymelaf评估Javascript中的嵌套属性
- AngularJS:NgShow评估集合中的对象属性
- AngularJS-正在检索已评估的属性
- 为什么'无法读取属性'x'未定义的'未评估为false
- 如何引用和评估变量值作为对象属性
- Phantomjs改变对象属性内页评估
- 评估HTML5数据属性-如何处理引号
- 试图测试元素是否具有属性而不直接评估元素