在node.js中是不build议使用__defineGetter__的?
根据MDN的这个文档 ,不应该使用Object.prototype.__defineGetter__()
:
非标准此function是非标准的,不在标准轨道上。 不要在面向Web的生产站点上使用它:它不适用于每个用户。 实现之间也可能存在大的不兼容性,并且行为在未来可能会改变。
已弃用此function已从Web标准中删除。 尽pipe一些浏览器可能仍然支持它,但它正在被丢弃。 不要在旧的或新的项目中使用它。 使用它的页面或Web应用程序可能随时中断。
另一方面,这个通知只提到面向Web的产品站点,实现之间的不兼容性以及浏览器支持。
这显然适用于客户端。 所以,我想知道它是否也被服务器端使用弃用,什么是最好的替代select。
__defineGetter__
等从来不是标准的,在ECMAScript5(2009)中被Object.defineProperty
,对象初始化器中的getter / setter字面语法以及ECMAScript 2015(“ES6”)中的get / set声明Object.defineProperty
。 下面的示例中,我也包含了setters,但是当然,您将把它们保留为只读属性。
-
Object.defineProperty
(ES5 +,2009):Object.defineProperty(obj, "name", { get: function() { return "the value"; }, set: function(value) { // Do something with value } });
-
对象初始值设定项中的getter / setter字面值语法(ES5 +,2009):
var obj = { get name() { return "the value"; }, set name(value) { // Do something with value } };
-
类中的getter / setter语法(ES2015,又名“ES6”):
class Example { get name() { return "the value"; } set name(value) { // Do something with value } }
前两者在V8和NodeJS中都是长期支持的。 最近版本的NodeJS(v4.0 +)在严格模式下支持类语法。
新的代码应该使用这些而不是旧的非标准的语法。