解决JavaScript库命名冲突问题 noConflict

来源:互联网 发布:ubuntu 软件包破损 编辑:程序博客网 时间:2024/05/21 04:18

当一个页面需要引入两个不同的js库,如果它们挂载在window对象下的全局变量命名相同,就会产生命名冲突。
为了解决这个问题,像jQuery库就提供了noConflict()方法来处理,实现思路如下:

var $ = '$'; //初始全局变量$ (假设这是第一个库,挂载在window对象下的全局变量名为$)//封装一个命名空间为jQuery的库 (假设这是第二个库,挂载在window对象下的全局变量名也为$)(function(window){    var _$ = window.$; //把全局变量$初始值保存到局部变量_$    var jQuery = {}; //定义一个名为jQuery的对象    jQuery.noConflict = function(){ //给jQuery对象增加一个解决命名冲突的方法        if(window.$ == jQuery){            window.$ = _$; //恢复全局变量$的初始值        }        return jQuery; //返回jQuery对象    };    window.$ = window.jQuery = jQuery; //把jQuery对象挂载到全局变量$上})(window);console.log($ == '$'); //falsevar myjQuery = $.noConflict(); //调用此方法把全局变量$还原为初始值,把返回值jQuery对象赋值给全局变量myjQueryconsole.log($ == '$'); //true
阅读全文
0 0
原创粉丝点击