インラインのオブジェクト リテラル 'get function()' スタイルと Object.defineProperty の間で機能が重複しているようです。
get https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/getの MDN ドキュメントでは、インラインの「get」関数が非推奨であるとは言及されていません。
var john = {
firstName: 'John',
lastName: 'Smith',
age: 21,
gender: 'Male'
// () → String
// Returns the full name of object.
get name() {
return this.firstName + ' ' + this.lastName
},
// (new_name:String) → undefined
// Sets the name components of the object,
// from a full name.
set name(new_name) {
var names = new_name.trim().split(/\s+/)
this.firstName = names['0'] || ''
this.lastName = names['1'] || ''
},
}
Mozilla の Jeff Walden による 2010 年の (と思われる) 記事には、次のように記載されています。
「SpiderMonkey と Mozilla の一部の古い getter/setter 構文のサポートを削除しました。これには、広く使用されている { get property() { return "value"; }, set property(v) { } } は含まれません。これは最新の標準の一部です。」
そう:
- インライン get/set は問題ありませんか?
- defineProperty を支持してインライン get/set は非推奨ですか?
- それぞれをいつ使用する必要がありますか?