gpt4 book ai didi

javascript - jquery 代理是如何工作的

转载 作者:行者123 更新时间:2023-11-30 10:29:09 25 4
gpt4 key购买 nike

我比什么都好奇。它如何将上下文传递给函数。它是否将函数包装在对象中?我确信有一些简单直接的代码可以在没有 jquery 代理的情况下在 js 中执行此操作

function abc(){
console.log(this.name);
}
var obj={name:"Something"};
$.proxy(abc,obj);

如果没有 jquery 代理,我怎么能做到这一点?

最佳答案

如果没有 jQuery,您可以使用 bind :

var newFunction = abc.bind(obj);

如果你想兼容IE8,你可以这样做

var newFunction = function(){ abc.call(obj) };

jQuery 是这样做的:

// Bind a function to a context, optionally partially applying any
// arguments.
proxy: function( fn, context ) {
var args, proxy, tmp;

if ( typeof context === "string" ) {
tmp = fn[ context ];
context = fn;
fn = tmp;
}

// Quick check to determine if target is callable, in the spec
// this throws a TypeError, but we will just return undefined.
if ( !jQuery.isFunction( fn ) ) {
return undefined;
}

// Simulated bind
args = core_slice.call( arguments, 2 );
proxy = function() {
return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
};

// Set the guid of unique handler to the same of original handler, so it can be removed
proxy.guid = fn.guid = fn.guid || jQuery.guid++;

return proxy;
},

关于javascript - jquery 代理是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977332/

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