Javascript 覆盖属性设置功能

标签 javascript node.js

JavaScript 是动态的。酷!

我有以下构造函数:

function Preferences () {

  this._preferences = {}

}

var obj = new Preferences()

我想实现这样的目标:

>>> obj.something = 'value'
>>> this._preferences['something']
    'value'

也就是说,设置 obj 的属性实际上并没有设置它自己的属性,而是设置 obj._preferences 的属性。也就是说,我想覆盖默认行为。

可能吗?

编辑:我想对所有属性名称实现此目的,即要设置的属性的名称尚不知道。

最佳答案

Object.defineProperty(Preferences.prototype, 'something', {
  get: function(){
    return this._preferences.something;
  },
  set: function(value){
    this._preferences.something = value;
  }
});

应该这样做。它使用访问器属性而不是数据属性定义属性“something”,并将调用“get”和“set”函数来决定访问 .something 时执行的操作。

关于Javascript 覆盖属性设置功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30780551/

相关文章:

node.js - 构建 Mongoose 连接模块的更好方法

javascript - Jquery width() 在计算文本宽度时给出错误的值

javascript - Selenium - 使用 NodeJS 中的 selenium-webdriver 库与现有浏览器 session 交互

node.js - MongoDB 在集合中的文档之间实现复杂的约束

javascript - 使用jquery在asp.net formview中隐藏按钮

MySQL 从 html 中的 node.js 结果,通过 react.js

mysql - 在 Sequelize 上运行迁移会引发死锁错误

javascript - 将参数传递给动态目标的 jQuery 函数

javascript - 如何将文本节点中的每个字符包装在 <li> 中?

javascript - 如何使谷歌折线图上的线可点击