我想将当前调用的对象与当前设置的参数一起传递给闭包函数。我不确定如何做到这一点,但后来我认为jQuery增加了另一层混乱,因为这引用了一个元素。
示例:
(function( $ ){
$.fn.addContentType = function(obj) {
var name = "this is just an example";
obj.func.call(this); //<--I want to pass this object, not the jQuery selector
};
})( jQuery );
jQuery("#someelement").addContentType({
func:function(){
console.log(this.name); //<--Expect "this is just an example"
}
});
任何想法如何做到这一点?
这只是一个例子而且没有做任何事情,我只是想表明我追求的是什么。如果我遗漏了细节,请告诉我。
答案 0 :(得分:1)
您可以使用.apply()
传递原始函数调用中的上下文和参数:
obj.func.apply(this, arguments);
.apply()
的{{3}}和arguments
对象的MDN reference。
答案 1 :(得分:1)
要访问name
作为jQuery对象的属性,您需要添加它而不是使用变量。
this.name = "this is just an example";
obj.func.call(this);
或者使用变量将值传递给函数:
var name = "this is just an example";
obj.func.call(this, name);
并在另一端接收:
func:function( name ){
console.log( name ); //<--Expect "this is just an example"
}
或者要使obj
成为this
值,请执行以下操作:
obj.func.call(obj, name);
...但除非您将值作为属性分配给obj
,否则仍需要传递参数。
答案 2 :(得分:0)