首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在javascript中访问扩展对象

在javascript中访问扩展对象
EN

Stack Overflow用户
提问于 2013-02-12 02:03:30
回答 1查看 130关注 0票数 2

我在从另一个JS文件创建一个有用的东西的实例时遇到了一些问题,我想更改实例的属性并使用这些方法。如果这是不可能的,或者你建议的任何东西。这个扩展和这个结构把我搞糊涂了。

代码语言:javascript
运行
复制
(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,如下所示:

代码语言:javascript
运行
复制
$("#myDivName").usefulThings({
  prop_path: '/la/lala' //these seems to get overwritten in the above
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-12 03:07:32

首先,让我们来看看MDN's introduction to the this keyword。在.each的jQuery文档中。

接下来,查看how does jquery chaining work?以了解构造方法。

然后,您应该注意到,在这种情况下使用new关键字是绝对不合适的。该表达式应替换为一个简单的对象文字:

代码语言:javascript
运行
复制
{
    defaults: {
        prop_path:'/la/lala',
        // …
    },
    construct: function(options) {
        …
    },
    //SOME METHODS
}

现在,我们来看看jQuery.extend。文档中的相关句子是

如果只向$.extend()提供了一个参数,这意味着省略了target参数。在这种情况下,假设jQuery对象本身是目标。通过这样做,您可以向jQuery命名空间添加新函数。对于希望向JQuery添加新方法的插件作者来说,这非常有用。

对于$.fn.extend (实际上是=== $.extend)也是如此,它扩展了jQuery.fn对象,这是jQuery对象的快捷方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14818097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档