因为编辑反应FCKeditor编辑器有些bug,所以需要研究他的核心代码。可恶的是作者竟然把 fckeditorcode_ie.js 这个文件中的所有换行、缩进等格式全部消除了,一个对象一行,根本无法阅读,所以只好手动恢复格式,也正好可以一行一行地研究代码。话说看到这一段:
不理解 var A=arguments; 是什么意思。从网上搜索了一下,才知道原来JavaScript也有这种强大的功能:用这个内置对象获取函数的参数。A.length就表示参数的长度,A[0]就表示第一个参数。
很类似于数组,但是又没有pop()、push()等方法。那么问题出现了:if(A.length==1&&A[0].pop) A=A[0]; 一句中,A[0].pop 是什么意思呢?于是写了一个测试脚本:
弹出的A[0].pop的值是 undefined 。想了一会儿觉得,他的意思应该是这样的:
就是说,如果参数只有一个,而且第一个参数是数组的话,就把这个数组当成参数对象。
通过这个例子,还发现了:如果一个对象有一个方法,比如Array对象有pop()方法,那么这个对象相应地有个属性,属性名是方法名去掉括号,比如Array.pop ,属性的值是方法的函数体。