簡體   English   中英

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及更低版本的舊瀏覽器中將不可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM