在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,但是当然,您将把它们保留为只读属性。

  1. Object.defineProperty (ES5 +,2009):

     Object.defineProperty(obj, "name", { get: function() { return "the value"; }, set: function(value) { // Do something with value } }); 
  2. 对象初始值设定项中的getter / setter字面值语法(ES5 +,2009):

     var obj = { get name() { return "the value"; }, set name(value) { // Do something with value } }; 
  3. 类中的getter / setter语法(ES2015,又名“ES6”):

     class Example { get name() { return "the value"; } set name(value) { // Do something with value } } 

前两者在V8和NodeJS中都是长期支持的。 最近版本的NodeJS(v4.0 +)在严格模式下支持类语法。

新的代码应该使用这些而不是旧的非标准的语法。