Javascript - 在创建时对数组元素执行操作
Javascript - Performing actions on Array elements on creation
我正在尝试在Javascript中创建一个对象/类,它的行为类似于数组,但具有一些附加功能。
我通过这些简单的线条实现了这一目标:
var Newclass = Array
Newclass.prototype.get_by_id = function(){}
但是,当我调用这个新类时,我正在尝试执行一些操作,因此我添加到其中的元素会以特定的方式进行处理(并在需要时进行转换)。
我想知道是否有一种方法可以在飞行中制作它,所以我可以做这样的事情:
var a = New Newclass('hello', 'goodbye', 'good afternoon')
并自动获取变量a
(例如):
console.log(a)
["HELLO", "GOODBYE", "GOOD AFTERNOON"]
我知道如何使用循环和数组函数(如 map 等)来做到这一点,但我想知道是否有任何方法可以覆盖构造函数(在此Newclass
上),以便它在创建时自动应用于其每个元素,而不会破坏任何东西。
编辑
谢谢大家的时间和答案。但是,我必须说这不是重复的,因为我不是在问如何使用arguments
(或者它们是否存在),而是如何在构造 Array 派生类时与他们合作,我发现这是完全不同的。
即使知道 arguments
参数存在,我仍然不知道如何在Array
的构造函数上处理这些参数,并且仍然拥有这种对象的所有本机函数。
您可以创建自己的数组导数:
function uppercaseStringArray(){
Array.call(this);
for(var i = 0; i < arguments.length; i++) this.push(arguments[i]);
}
uppercaseStringArray.prototype = Object.create(Array.prototype);
uppercaseStringArray.prototype.push = function(string){
Array.prototype.push.call(this, string.toUpperCase());
}
这完全按照您的预期工作,并且它仍然具有普通数组具有的所有属性:
function uppercaseStringArray(){
Array.call(this);
for(var i = 0; i < arguments.length; i++) this.push(arguments[i]);
}
uppercaseStringArray.prototype = Object.create(Array.prototype);
uppercaseStringArray.prototype.push = function(string){
Array.prototype.push.call(this, string.toUpperCase());
}
var a = new uppercaseStringArray('tomato', 'apple', 'pear');
console.log(a);
document.write('[' + a.join(', ') + ']');
您可以修改 push 方法以接受无限数量的参数。但是请注意,这不是一个完整的数组,因为a[5] = 'thingy'
不会修改数组的长度,因此请确保仅使用在数组中添加和删除的方法。
这也使用instanceof
将自己标识为Array
和uppercaseStringArray
。您可以将自己的方法添加到数组中,就像其原型中的get_by_id
函数一样。
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- Mongoose-在更新中删除数组元素
- javascript数组元素是否知道其封闭数组
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 如何在javascript中使用click函数选择数组元素
- 如何在JavaScript中剥离数组元素中的非整数
- 消隐数组元素是否生成自己的属性
- 如何使一个Math.random数组元素比另一个数组元素更有可能被选中
- 在Codrops的内容中添加数组元素展开缩略图网格预览
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- 如何访问数组中的数组元素(JavaScript)
- 生成ACF标记位置的数组(元素列表后缺少])
- validate.js验证数组元素
- JavaScript Unshift EACH 数组元素
- 如何在加号运算符之后选择数组元素的一部分
- 访问标记图标的图像数组元素
- JavaScript 合并相同的数组元素
- 删除仅空格数组元素
- JavaScript闭包和返回数组元素