jquery问题

Winnie007 发布于 2017/03/24 09:53
阅读 77
收藏 0

/**
 *  分发调用相关插件
 */
var gis = {};

if (jQuery)(function() {
    $.extend($.fn, {
        gis : function() {
            var func = arguments[0];
            arguments[0] = this;
            //1、return eval('gis["'+ func+'"]').apply(this, arguments);
            //2、return gis['"'+func+'"'].apply(this,arguments);
        }
    });
})(jQuery);
求大神,指教 注释中的 1  2 这两句话有什么区别。。。。

加载中
0
oj8kay
oj8kay

如果没有理解错误的话,gis应该是一个函数的集合,比如

var gis = {funcName1: func1, funcName2: func2, funcName2: func3}; // func1,func2,func3都是函数对象

你上面代码的func变量应该是函数名,比如

var func = 'funcName1';

那么gis['"'+func+'"']就相当于gis['funcName1'],结果就是func1

接下来的操作func1.apply(this,arguments)apply的用法我就不多讲了,网上资料很多

 

至于为什么会用到 eval,我猜gis这个函数对象里的func1可能不是一个函数,而是一个函数定义的字符串,eval的作用就是将它转化为真正的函数,然后执行apply操作。

 

原生js多看看就行,这段代码难点就这几个

Winnie007
Winnie007
谢谢
返回顶部
顶部