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

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

adaptors.addBool = function(adapterName, ruleName) {
//....
}
adaptors数组的addBool 是什么意思啊? 这是什么用法?
addBool 算属性还是一个元素?
展开
 我来答
百度网友e096309
2017-01-17 · TA获得超过1327个赞
知道小有建树答主
回答量:501
采纳率:96%
帮助的人:412万
展开全部
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]);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式