gpt4 book ai didi

javascript - 数组只能存储一种类型的对象?

转载 作者:行者123 更新时间:2023-11-28 19:17:59 24 4
gpt4 key购买 nike

是否可以创建一个只允许存储特定对象的数组?是否有一种方法可以将元素添加到我可以覆盖的数组中?

最佳答案

是的,您可以,只需覆盖数组的推送数组(假设您想要存储的只是数字,而不是执行以下操作:

var myArr = [];
myArr.push = function(){
for(var arg of arguments) {
if(arg.constructor == Number) Array.prototype.push.call(this, arg);
}
}

只需将 Number 更改为您想要匹配的任何构造函数。另外,如果您想要的话,我可能会添加 and else 语句或其他内容来引发错误。

更新:

使用Object.observe(目前仅在chrome中可用):

var myArr = [];

Array.observe(myArr, function(changes) {
for(var change of changes) {
if(change.type == "update") {
if(myArr[change.name].constructor !== Number) myArr.splice(change.name, 1);
} else if(change.type == 'splice') {
if(change.addedCount > 0) {
if(myArr[change.index].constructor !== Number) myArr.splice(change.index, 1);
}
}
}
});

现在在 ES6 中有一些代理,您应该能够执行以下操作:

var myArr = new Proxy([], {
set(obj, prop, value) {
if(value.constructor !== Number) {
obj.splice(prop, 1);
}
//I belive thats it, there's probably more to it, yet because I don't use firefox or IE Technical preview I can't really tell you.
}
});

关于javascript - 数组只能存储一种类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com