看到一段代码
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("页面加载完毕");
}
就是类似的写法。追问
// 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]);
}
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]);
}
温馨提示:答案为网友推荐,仅供参考