Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:获取对象的已计算属性_Javascript_Json_Object - Fatal编程技术网

JavaScript:获取对象的已计算属性

JavaScript:获取对象的已计算属性,javascript,json,object,Javascript,Json,Object,我有两个类似的对象: var person = { fname: 'John', lname: 'Doe' }; var myObj = { fullName: function () { return person.fname + ' ' + person.lname; } }; 我需要的是这样一个对象–myObj,但经过评估: var someObj = { fullName: 'John Doe' }; 由于myObj将被传递

我有两个类似的对象:

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
a

var-person={
fname:'约翰',
名称:“Doe”,
//fullName将在属性访问时进行评估
获取全名(){
返回this.fname+“”+this.lname;
}
};
document.querySelector(“pre”).textContent=JSON.stringify(person,null,4)

您可以使用对象文本中的正确语法将
全名
设置为a

var-person={
fname:'约翰',
名称:“Doe”,
//fullName将在属性访问时进行评估
获取全名(){
返回this.fname+“”+this.lname;
}
};
document.querySelector(“pre”).textContent=JSON.stringify(person,null,4)