(function(){
var a ={},push=[].push,i=0,b=function(){};
alert('length' in b) //true
for(;i++<20;){
push.call(a,i);
push.call(b,i);
}
alert(a[0]); //undefine
alert(b[0]); //不知道为什么函数的length只能为1
alert(b[1]); //undefined
a.length = 0; //非要加个length属性才行 不知道原因
i = 0;
for(;i++<20;){
push.call(a,i);
}
alert(a[0]);
alert(a[1]); //可以一直用push方法
alert(a.length)
alert([].join.call(a,'-'));//也能用数组的的一些方法
/*
个人理解 数组也好 对象也好
a[0] 事实上就是等同于 a.0(只是这样不符合语法规范)
也不知道这样理解对不对 -_-!.... 知道的同学们指点下.....
*/})();其实jq里面用到了很多这中写法 学不到精髓学点皮毛也是好的...........
var a ={},push=[].push,i=0,b=function(){};
alert('length' in b) //true
for(;i++<20;){
push.call(a,i);
push.call(b,i);
}
alert(a[0]); //undefine
alert(b[0]); //不知道为什么函数的length只能为1
alert(b[1]); //undefined
a.length = 0; //非要加个length属性才行 不知道原因
i = 0;
for(;i++<20;){
push.call(a,i);
}
alert(a[0]);
alert(a[1]); //可以一直用push方法
alert(a.length)
alert([].join.call(a,'-'));//也能用数组的的一些方法
/*
个人理解 数组也好 对象也好
a[0] 事实上就是等同于 a.0(只是这样不符合语法规范)
也不知道这样理解对不对 -_-!.... 知道的同学们指点下.....
*/})();其实jq里面用到了很多这中写法 学不到精髓学点皮毛也是好的...........
解决方案 »
- JS如何验证字串里的字符ASCII码是相同的或是顺序的?
- 帮忙修改一下这段代码
- 以下代码在FF中alert(obj);无法得到#cccccc这样的值?请问那里不兼容
- 请问如何用js来对输入日期的时间范围进行限制?
- js代码,为什么没有出现预期效果
- 如何用javascript实现每隔几秒中把字符串写入表格中
- 请问radio的input怎么判断?
- 如何判定特殊符号(单引号,双引号,#,$,%,&等)请教高手
- 如何检测一下某台计算机上是否安装某个ActiectX DLL(我只是检测一下,并不真开使用这个组件)
- 无法调用变量!请指点!
- js表单验证的问题,为什么表单提交只走第一个方法,第二个不走那??
- IE7下 iframe 页面加载是空白
push用在数组中比较常见
至于在对象中没有见到过a[0] 事实上就是等同于 a.0(只是这样不符合语法规范)
这个是对象的属性,0是数字的所以a.0有时候得不到0属性的值,所以就用a[0]
a = {name:'ss', 0:12}
a['name'] or a.name 同理
var a = {
field: "a.field",
func: function() {
alert(this.field);
}
}var b = { field: "b.field" }
a.func.call(b); // b.field
一般不会想到这么用.但理解的话,也容易接受.JS不是"一切都是对象"吗(怎么感觉好像跟JAVA搞混了,记忆又模糊了),数组对象,函数对象,类对象,在根上的"基类"都具有这个PUSH方法.
对象的这种写法 估计不知道的人还是比较少的个人认为 代码就是让人看的云里雾里这个我真知道 -_-!我是标题党的党员你说的不对 push方法只在Array的prototype上 函数对象,类对象都没有
this[this.length++] = v;//这里需要对象拥有length属性
}var obj = {};
obj.length = 0;push.call(obj,1);
push,call(obj,2);alert(obj[0]);
alert(obj['1']); //等同于obj[1],因为 对象[属性] 这种读取方式,属性可以是任意字符。而 对象.属性 这种方式,属性必须是有效变量名^[_a-z][a-z0-9]+$