网页设计学习笔记

HTML,CSS,JavaScript

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

在 JavaScript 中,function 和 array 也是 object,所以它们也可以当成 object 来使用。例如:

var fun = function(){};
fun.key = "dog";

var arr = new Array();
arr.key = "cat";

console.log(fun.key); // dog
console.log(arr.key); // cat

类似地,我们也可以用 function 和 object 当成 array 来使用,例如:

var fun = function(){};
fun[1] = "dog";
fun[2] = "cat";

var obj = new Object();
obj[1] = "dog";
obj[2] = "cat";

console.log(fun[1]); // dog
console.log(obj[2]); // cat
console.log(fun.length); // 0
console.log(obj.length); // undefined

注意此时 array 的各种方法和属性都是没有的,比如 length。上面例子中 fun.length 之所以为 0,是因为 Function.length 指的是函数的参数个数。这个属性不能修改,所以用 function 模拟 array 时需要改用别的属性名比如 len 等。

这样的用法当然很奇怪,所以一般情形不要用它。

参考资料:
[1] Associative Arrays in JavaScript – There’s None!
[2] Object as JavaScript object’s Key
[3] jshashtable #usage
[4] Function.length - JavaScript | MDN
[5] Function.name - JavaScript | MDN

posted on 2013-01-22 20:39  zoho  阅读(250)  评论(0编辑  收藏  举报