JS getters:定义属性替换或补充旧的内联“get”“set”语法
JS getters: does defineProperty replace or complement the older, inline 'get' 'set' syntax?
内
联对象文字'get function()'样式和Object.defineProperty之间似乎存在功能重叠。
用于获取 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) { } },它被广泛使用,是最新标准的一部分。
所以:
- 内联获取/设置正常吗?
- 内联获取/设置是否被弃用以支持 defineProperty?
- 我应该什么时候使用它们?
- 内联获取/设置正常
- 如果支持
defineProperty
,则不会弃用它们(__defineGetter__
和__defineSetter__
被弃用) -
defineProperty
为您提供了对要定义的属性的更多粒度和控制:您可以决定该属性是否configurabile
、writable
和enumerable
。你不能用get
和set
做到这一点.此外,对于defineProperty
,您无法定义必要的 getter 或 setter,而只是一个值。 - 当您不需要更多粒度时,请使用
get
和set
,它是一种糖语法,可以在对象定义本身中使用,其中创建实例后必须使用defineProperty
。当您需要更精细时,或者不需要指定 getter 和 setter 而只需要指定一个值时,请使用defineProperty
。
希望对您有所帮助。
指向有关get
和set
的规格的链接
ES5: http://www.ecma-international.org/ecma-262/5.1/#sec-11.1.5
ES6(草案):http://people.mozilla.org/~jorendorff/es6-draft.html#sec-method-definitions-static-semantics-propname
相关文章:
- 有没有一种方法可以防止img get请求使用css或js发生
- 铬:“;未捕获的语法错误:意外的标记:"
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 如何告诉MathJax对下标使用替代语法
- Javascript语法向设置发出sessionStorage值
- CORS-重定向到第二个GET正在接收的页面
- 未捕获的语法错误:意外的标记{
- 使用$scope方法时的ControllerAs语法
- "未捕获的语法错误:意外的标记}"
- javascript自执行函数-不同的语法
- 函数的Javascript语法
- jQuery Ajax GET请求工作不正常
- AngularJS $http GET 请求到本地 JSON 文件返回语法错误:意外令牌]
- JS getters:定义属性替换或补充旧的内联“get”“set”语法
- JQuery.get 语法错误
- Get "语法错误无法Get /xyz"使用jQuery AJAX
- ASP.Net AJAX使用类似$get('myId')的语法,这是标准的Javascript或JQue