是否有办法重写js数组中length的descriptor在js中,数组length已经有默认的descriptor,并且configurable为false,所以没有办法覆盖,由于我想查看在循环过程中(用length属性去做一个限制结束)是否会将length缓存起来,所以想覆盖length的gettet测试相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)for (let i = 10; i < arr.length; i++) { //想知道arr.length是否每一次都会调用length}不知道浏览器内部是否会对length缓存起来,循环的时候是否只call一次length然后后面的循环都用一个缓存值
1 回答
富国沪深
TA贡献1790条经验 获得超9个赞
当然不会缓存。
var array = [0, 1, 2, 3];for (let i = 0; i < array.length; i++) { if (array.length < 10) { array.push(4); } console.log(i) }
这段代码可以证明。
数组也是对象,因此,这段代码也可以证明
var obj = {}Object.defineProperty(obj, 'length', { get: function () { console.log('x'); return 4; } })for (var i = 0; i < obj.length; i++) { }
obj.length属性不会缓存,每次都会读取
添加回答
举报
0/150
提交
取消