由于需要在Discuz!6.1中使用jquery库,但后来发现用不了,也找不到原因,之后去网上一找,原来是因为Discuz!6.1的common.js修改Array对象的prototype方法,造成的问题。解决方法是:
if(typeof Array.prototype.push === 'undefined') {
Array.prototype.push = function(value) {
this[this.length] = value;
return this.length;
}
}
对这个方法进行判断。这解决这个问题的过程中,算是理解了一些奇怪写法的js代码。比如:
(function($){
…….
}){jQuery}
这种写法使用了闭包的一些特性。通过一个匿名函数来隐藏变更的作用域,这样在这个函数体内还是使用$为jQuery对象的引用,呵呵,原来写的代码在有冲突的页面中就不需要修改了。