Javascript-自定义数组不起作用
Javascript - Custom arrays not working
请检查下面的代码-
custom_array.push(...) is working
but
custom_array[i] = "n"
不起作用。
还有一些事情我不确定为什么它不起作用。请注意带有"?"的注释,该注释无效。请参考小提琴-http://jsfiddle.net/vc0bbm3d/
使用括号语法设置项对继承数组的对象无效的原因是它实际上不是数组。
当属性名称为整数时,数组具有用于处理属性赋值的特殊代码(这就是使用括号语法所做的)。如果索引超出当前长度,则会调整length
属性。
将值指定给对象中的属性时,没有特殊的代码来处理长度。该特性只是像往常一样指定,并且从不调整长度。由于对象已经有了处理使用括号语法时发生的事情的代码,因此它所包含的数组永远不会发挥作用。
为了使括号语法以这种方式工作,对象必须是一个实际的数组。
尝试
ar[3] = 2;
ar.length =4
这样它就知道你添加了一些东西。
以下是我所说的在默认数组对象周围创建一层以扩展功能的意思的示例:
var SuperArray = function(){
this.arr = Array.prototype.slice.call(arguments);
};
//abstraction of default array functionality
SuperArray.prototype.set = function(index, value){
this.arr[index] = value;
return this;
};
SuperArray.prototype.unset = function(index){
this.arr.splice(index, 1);
return this;
};
//extension of default array functionality
SuperArray.prototype.consoleList = function(){
var arr = this.arr;
for(var i = 0, l = arr.length; i < l; i++){
console.log(arr[i]);
};
return this;
};
var extArr = new SuperArray(1,2,3);
extArr.set(2, 25); //does array[2] = 25;
extArr.unset(1); //removes array[1]
extArr.consoleList();//console.logs all items in array
extArr.set(2, 25).unset(1).consoleList();//same thing
这个简单的对象接受参数并将它们直接设置到一个数组中,然后我们按照自己的意愿对其进行操作。然后,您可以添加所需的任何实用程序函数,检查现有的数组功能等。
相关文章:
- 循环通过数组的If语句不起作用
- Jquery.each数组推送不起作用
- 将数组的拼接分配给自身时,Javascript控制台打印不起作用
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 使用复杂数组时Jquery自动完成功能不起作用
- 就地反转数组为什么不起作用
- 对照数组脚本检查文本框中的值不起作用
- For循环与数组不起作用
- 缺陷的JQuery数组,实现不起作用
- JavaScript 数组/循环不起作用
- Jquery数组查询不起作用
- 循环浏览页面上所有选中的复选框并将id拉入数组不起作用
- 数组输入不起作用
- JavaScript的循环问题,将值插入数组将不起作用
- Javascript循环数组无限不起作用
- 映射 jQuery 对象的数组不起作用
- 由数组数组表示的表;不起作用
- Javascript-自定义数组不起作用
- 将数组返回到$scope中;不起作用
- 构建Ajax调用数组时,JQueryAjax成功回调不起作用