我知道如何向对象添加自定义属性。
假设我有一个 foo 方法,
const foo = () => { console.log('custom method'); }
我可以将该foo方法添加到数组原型并使用数组变量调用它
Array.prototype.foo = foo;
然后如果我创建一个名为的数组,
bar = [1, 2, 3];
并运行
bar.foo()
它将执行我的自定义 foo 方法。但我不知道如何foo在每次创建数组和每次更新数组时运行该方法。
我想运行一个自定义方法并在 JavaScript 中创建/更新数组期间存储一些数据。我怎么做?
可以说我有一个自定义方法,
const customMethod = () => {
...doing some stuff
}
我希望这个自定义方法在每次创建数组时运行并在该数组中存储一些数据。就像我想找到数组的最大值并将其存储在带有键的数组中,maximum就像我们length现在存储的那样。这样在创建/更新数组后我就不必计算最大值。我只要打电话myArray.maximum就能得到最大值。
这种方法做了类似的事情。但它需要添加事件侦听器和新的推送方法,以便每次使用该自定义推送方法将某些内容推送到数组时都可以触发事件。Array.prototype.push但在这种情况下,如果我使用常规方法或使用像这样的扩展运算符创建新数组,我的自定义函数将不会更新newArr = [...oldArray, value]。
我尝试扩展现有的数组类型并创建 MyCustomArray。但它根本不能作为数组工作。
class MyCustomArray extends Array {
constructor(...args) {
super(...args);
console.log('custom array');
}
}
知道如何扩展数组来创建我的 CustomArray 类型并向其添加侦听器,以便每次创建/更新 CustomArray 时它都会计算最大值并将其设置为数组 max 属性(只需最少的代码更改)?
所以我的 CustomArray 将拥有像普通数组一样的所有方法和实例变量。但它会做一件额外的事情,每次我更新/创建 CustomArray 时,它都会计算该数组中的最大值并将其设置为属性。
慕的地10843
白衣染霜花
手掌心
相关分类