[英]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及更低版本的舊瀏覽器中將不可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.