Javascript中[ ]、{ } 、Array()
时间:2007-11-10
来源:互联网
一、JS中没有除数字外的字符索引数组
当然!可以这样做,当结果不是你所想的
如:
要想循环输出Array中的值,只能
Array中有个prototype属性,可以扩展Array对象的方法
如果这样
next:function(){};
上面循环也会多打印一个你意想不到的值
那么,Array的规范是接近C语言中的array,
二、[ ]也就是new Array()
它可以方便的创建多维数组
三、{ }是new Object()
其实这个最接近PHP中的数组
可以说PHP中数组是集Hash Array于一体的
四、判断是否是array
也许你会想到typeof
但是不管是以上谁创建的对象
应用typeof arr= ‘object’
应该这样判断
mootools1.2dev的做法是
五、arguments 不是数组
arguments是当前执行的 function 对象返回一个arguments 对象。
function.arguments
function 参数是当前执行函数的名称,可以省略。
arguments包含一些附属属性arguments.callee、arguments.length
用两段代码描述它们
用for(var k in arguments)的方式遍历不出arguments[[0|1|2|...|n]
但有些地方需要数组这个特性,我必须把arguments转化为array
prototype.js的做法
谁更巧妙由你说的算
未完待续。。。
[ 本帖最后由 muqiao 于 2007-11-11 02:58 编辑 ]
当然!可以这样做,当结果不是你所想的
如:
复制内容到剪贴板
p[0] = '第一个值';
p[1] = '第二个值';
p['h'] = '可以访问这个值';
以上几乎可PHP一样,但是p.length = 2;代码:
var p = new Array();p[0] = '第一个值';
p[1] = '第二个值';
p['h'] = '可以访问这个值';
要想循环输出Array中的值,只能
复制内容到剪贴板
}
这样有个严重问题代码:
for(var key in p){}
Array中有个prototype属性,可以扩展Array对象的方法
如果这样
复制内容到剪贴板
所有Array对象都会多一个索引值代码:
Array.prototype.next = function(){};next:function(){};
上面循环也会多打印一个你意想不到的值
那么,Array的规范是接近C语言中的array,
二、[ ]也就是new Array()
它可以方便的创建多维数组
三、{ }是new Object()
其实这个最接近PHP中的数组
可以说PHP中数组是集Hash Array于一体的
四、判断是否是array
也许你会想到typeof
但是不管是以上谁创建的对象
应用typeof arr= ‘object’
应该这样判断
复制内容到剪贴板
但是如果你之前应用
代码:
return (arr.constructor==Array);
复制内容到剪贴板
或
代码:
Array.prototype.constructor = function(){}
复制内容到剪贴板
将不会再有true这个结果代码:
arr.constructor = function(){}mootools1.2dev的做法是
复制内容到剪贴板
Array.prototype.$family = 'array'
return (arr.$family=='array');
还是不可完全相信代码:
Array.prototype.$family = 'array'
return (arr.$family=='array');
五、arguments 不是数组
arguments是当前执行的 function 对象返回一个arguments 对象。
function.arguments
function 参数是当前执行函数的名称,可以省略。
arguments包含一些附属属性arguments.callee、arguments.length
用两段代码描述它们
复制内容到剪贴板
function param(){
var s='';
for(var i=0,l=arguments.length;i<l;i++){
s += 'param'+ i+' : '+ arguments[i] + '\n';
}
alert(s);
}
param(1,2,3);
代码:
function param(){
var s='';
for(var i=0,l=arguments.length;i<l;i++){
s += 'param'+ i+' : '+ arguments[i] + '\n';
}
alert(s);
}
param(1,2,3);
复制内容到剪贴板
if (n <= 0)
return 1;
else
return n * arguments.callee(n - 1)//等同于factorial(n-1)
}
alert(factorial(3));
看完上面你会想这不是数组嘛!不是代码:
function factorial(n){if (n <= 0)
return 1;
else
return n * arguments.callee(n - 1)//等同于factorial(n-1)
}
alert(factorial(3));
用for(var k in arguments)的方式遍历不出arguments[[0|1|2|...|n]
但有些地方需要数组这个特性,我必须把arguments转化为array
prototype.js的做法
复制内容到剪贴板
while (length--) results[length] = iterable[length];
return results;
mootools的做法
代码:
var length = iterable.length, results = new Array(length);while (length--) results[length] = iterable[length];
return results;
复制内容到剪贴板
return Array.prototype.slice.call(iterable);
以上iterable是传入的参数这里指arguments代码:
return Array.prototype.slice.call(iterable);
谁更巧妙由你说的算
未完待续。。。
[ 本帖最后由 muqiao 于 2007-11-11 02:58 编辑 ]
作者: muqiao 发布时间: 2007-11-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28