2016-04-30 6 views
0

の性質を評価したガイド:私は必要なものJavaScriptを:私はこれに似た二つの物体持つオブジェクト

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のより成熟した実装に付属するライブラリはありますか?

答えて

2

fullName"getter" propertyにすると、オブジェクトリテラルに適切な構文を使用することができます。

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と下のように、古いブラウザでは使用できません。

+1

本当に涼しい、これについて知らなかった、ありがとう。 – Sven

+0

ようこそ。 –

関連する問題