Lui*_*ira 1 javascript node.js
根据MDN的这份文件,Object.prototype.__defineGetter__()不应该使用:
非标准 此功能是非标准的,不在标准轨道上.不要在面向Web的生产站点上使用它:它不适用于每个用户.实现之间可能存在很大的不兼容性,并且行为可能在将来发生变化.
已弃用 此功能已从Web标准中删除.虽然有些浏览器可能仍然支持它,但它正在被删除.不要在旧项目或新项目中使用它.使用它的页面或Web应用程序可能随时中断.
另一方面,此通知仅提及面向Web的产品站点,实现之间的不兼容性以及浏览器支持.
它显然适用于客户端.所以,我想知道它是否也被弃用于服务器端使用,以及什么是最好的替代选择.
__defineGetter__在ECMAScript5(2009)中Object.defineProperty,在对象初始化器中使用getter/setter文字语法,在ECMAScript 2015("ES6")中通过类中的get/set声明废弃了这些从未标准化的内容.下面的例子,我也在其中包含了setter,但当然你会把它们留给只读属性.
Object.defineProperty (ES5 +,2009):
Object.defineProperty(obj, "name", {
get: function() {
return "the value";
},
set: function(value) {
// Do something with value
}
});
Run Code Online (Sandbox Code Playgroud)对象初始值设定项中的Getter/setter文字语法(ES5 +,2009):
var obj = {
get name() {
return "the value";
},
set name(value) {
// Do something with value
}
};
Run Code Online (Sandbox Code Playgroud)类中的Getter/setter语法(ES2015,又名"ES6"):
class Example {
get name() {
return "the value";
}
set name(value) {
// Do something with value
}
}
Run Code Online (Sandbox Code Playgroud)前两个在V8和NodeJS 中都支持很长时间.最近版本的NodeJS(v4.0 +)在严格模式下支持类语法.
新代码应该使用这些而不是旧的从不标准语法.
| 归档时间: |
|
| 查看次数: |
571 次 |
| 最近记录: |