js 数组可以赋值函数? 数组还能

看到一段代码
adaptors = [];
adaptors.push({name: "", params: "", adapt: ""});

adaptors.addBool = function(adapterName, ruleName) {
//....
}
adaptors数组的addBool 是什么意思啊? 这是什么用法?
addBool 算属性还是一个元素?

addBool是一个函数(确切的说是函数指针),你可以像调用函数一样调用它:
adaptors.addBool("123", "abc");

其实定义函数有两种写法:
function fun1() {...}
var fun2 = function() {...};
fun2就是一个函数变量。
你可以经常看到js动态给元素绑定事件的时候:
window.onload = function() {
alert("页面加载完毕");
}
就是类似的写法。追问

数组的意思不是一组元素吗, 怎么还能有函数在里面, 有了函数还叫数组吗?

追答

可以放的,它跟对象其实挺像,有了函数也可以当成数组来用,只是你可以认为这个数组多出一些特殊的“功能”,只是使用for in 语句的时候需要注意一下:

// 用for in循环,你会发现打印出
// 0 Object
// 1 Object
// 2 Object
// addBool Function
// 因为这时候addBool也算adaptors的key
for(var i in adaptors) {
    console.log(i);
    console.log(adaptors[i]);
}

// 用普通的定数循环,就可以正常使用:
// adaptors.length返回的仍然是数组元素的个数,不包含addBool这种“奇怪”的值
for(var i=0; i<adaptors.length; i++) {
    console.log(i);
    console.log(adaptors[i]);
}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网