mik*_*ana 6 javascript arrays google-chrome ecmascript-5 defineproperty
我想(主要是出于学术原因)能够在数组上length使用设置访问器Object.defineProperty(),因此我可以通知大小更改.
我知道ES6对象观察和watch.js,但我想尝试在没有额外库的情况下在ES5中执行此操作,即使这仅适用于V8/Chrome.
示例数组:
var demoArray = ['one', 'two']
Alas Chrome,开箱即用,使得长度不可配置:
Object.getOwnPropertyDescriptor(demoArray, 'length')
Object {value: 2, writable: true, enumerable: false, configurable: false}
它不起作用:
Object.defineProperty(demoArray, 'length', { set: function(){ console.log('length changed!')} })
失败了 'TypeError: Cannot redefine property: length'
如你所见,configurable是false- 所以失败是可以理解的.但是根据MDN,它应该是可能的.
我怎样才能defineProperty使用数组的length属性?这有用吗?
由于阅读了更多相关内容,Kangax 的优秀文章致力于子类化数组主题,涵盖了各种技术。一种称为数组原型注入的技术用于在 Ractive.js 等流行库中对 Array 进行子类化。它依赖于非规范但流行的__ proto __的公开,但允许长度上的“访问器”。
| 归档时间: | 
 | 
| 查看次数: | 3689 次 | 
| 最近记录: |