gpt4 book ai didi

jQuery 插件教程困惑

转载 作者:行者123 更新时间:2023-12-01 00:01:17 25 4
gpt4 key购买 nike

我一定错过了一些东西。 jQuery插件教程找到here ,在“命名空间”->“插件方法”部分中,隐藏着以下插件声明。我在这里没有得到的是 methods 变量的范围;我的意思是,方法不应该被定义为工具提示中的 var 吗?一旦这个匿名函数执行,如果我理解正确的话,methods就会超出范围,因为它被定义为函数内的 var 。工具提示引用的 var 方法在调用工具提示时会超出范围,这是怎么回事?我错过了什么?

(function( $ ){

var methods = {
init : function( options ) { // THIS },
show : function( ) { // IS },
hide : function( ) { // GOOD },
update : function( content ) { // !!! }
};

$.fn.tooltip = function( method ) {

// Method calling logic
if ( methods[method] ) {
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );
}

};

})( jQuery );

最佳答案

分配给$.fn.tooltip的函数是closure [Wikipedia]因此可以访问所有更高的范围。

当外部函数返回时,methods 不会被销毁,因为闭包仍然引用它。

关于jQuery 插件教程困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7041928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com