我想通过使用Object.defineProperty方法更改Array的行为方式。
我知道这不是一件好事。这仅用于实验目的。
例如,如果我有一个数组stop
,当我有console.log([1,2,3])时,我希望输出结果为[1, 2, 3]
。
同样,我知道这是疯狂的事情!但是,我想了解它如何更深入地理解JavaScript。
[2, 4, 6]
谢谢! @Ry,@ vol7ron
'use strict';
Object.defineProperty(
Array.prototype,
Symbol.iterator, //should this be `this` instead?
{
value: function*() {
yield 'what should I do here ???';
}
}
)
console.log([1, 3]) // expect this result to be [2, 6]
答案 0 :(得分:1)
[...[1, 3]]
不使用迭代器迭代来显示您的数组。但是,已经在该示例中成功覆盖了它,正如您可以看到使用迭代器的东西,例如数组文字传播'use strict';
let originalIterator = Array.prototype[Symbol.iterator];
Array.prototype[Symbol.iterator] = function* () {
for (let x of originalIterator.call(this)) {
yield 2 * x;
}
};
console.log([...[1, 3]]);
。
简化为:
{{1}}