我在从另一个JS文件创建一个有用的东西的实例时遇到了一些问题,我想更改实例的属性并使用这些方法。如果这是不可能的,或者你建议的任何东西。这个扩展和这个结构把我搞糊涂了。
(function($) {
$.extend({
usefulThings: new function() {
this.defaults = {
prop_path:'/la/lala',
//OTHER STUFF
};
this.construct = function(options) {
return this.each(function() {
var setting;
this.settings = {};
settings = $.extend(this.settings, $.usefulThings.defaults, options);
$this = $(this);
//OTHER STUFF
$.data(this, "usefulThings",settings);
// FIRST METHOD CALL
//OTHER STUFF
});
};
//SOME METHODS
}
});
$.fn.extend({
usefulThings: $.usefulThings.construct
});
})(jQuery); 我见过从脚本块中调用usefulThings,如下所示:
$("#myDivName").usefulThings({
prop_path: '/la/lala' //these seems to get overwritten in the above
});发布于 2013-02-12 03:07:32
首先,让我们来看看MDN's introduction to the this keyword。在.each的jQuery文档中。
接下来,查看how does jquery chaining work?以了解构造方法。
然后,您应该注意到,在这种情况下使用new关键字是绝对不合适的。该表达式应替换为一个简单的对象文字:
{
defaults: {
prop_path:'/la/lala',
// …
},
construct: function(options) {
…
},
//SOME METHODS
}现在,我们来看看jQuery.extend。文档中的相关句子是
如果只向
$.extend()提供了一个参数,这意味着省略了target参数。在这种情况下,假设jQuery对象本身是目标。通过这样做,您可以向jQuery命名空间添加新函数。对于希望向JQuery添加新方法的插件作者来说,这非常有用。
对于$.fn.extend (实际上是=== $.extend)也是如此,它扩展了jQuery.fn对象,这是jQuery对象的快捷方式。
https://stackoverflow.com/questions/14818097
复制相似问题