标签:getter-setter defineproperty javascript
我可以访问在defineProperty调用中定义的值吗?我想创建这样的东西:
Object.defineProperty(this, 'name', {
value: 'Caaaarl',
get: function() { return <the value>; },
set: function(x) { <the value> = x; }
});
当前,我必须为每个属性创建第二个属性.
var _name = '';
Object.defineProperty(this, 'name', {
get: function() { return _name; },
set: function(x) { _name = x; }
});
感谢您的帮助!
解决方法:
在属性描述符中同时具有值和get或set字段是不合法的.
如果您希望通过使用getter和setter来做一个更复杂的属性,而不仅仅是设置该属性而不污染名称空间,则可以将其底层值保存在闭包中:
(function() {
var value = 'Caaarl';
Object.defineProperty(this, 'name', {
get: function() {
// do some stuff
...
return value;
},
set: function(v) {
// do some stuff
...
value = v;
},
enumerable: true
});
}).call(this);
标签:getter-setter,defineproperty,javascript 来源: https://codeday.me/bug/20191121/2052332.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。