首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery - $.extend未返回预期函数

问jQuery - $.extend未返回预期函数
EN

Stack Overflow用户
提问于 2016-09-27 19:08:44
回答 1查看 74关注 0票数 0

我正在使用gmail.js做一些项目。在库中,有一个如下所示的函数:

代码语言:javascript
复制
api.dom.compose = function(element) {
    // stuff
}

api.dom.email = function(element) {
    this.id = element;
    var message_class_id = 'm' + this.id;
    this.id_element = $('div.ii.gt div.a3s.aXjCH.' + message_class_id);
    element = this.id_element.closest('div.adn');

    this.$el = element;
    return this;
};

$.extend(api.dom.email.prototype, {
    body: function(body) {
        var el = this.dom('body');
        if (body) {
            el.html(body);
        }
        return el.html();
    },

    from: function(email, name) {
        var el = this.dom('from');
        if (email) {
            el.attr('email',email);
        }
        if (name) {
            el.attr('name',name);
            el.html(name);
        }
        return {
            email: el.attr('email'),
            name: el.attr('name'),
            el: el
        };
    },

    // more extended functions

});

// more functions on the api.dom object

return api;

在我的代码中,我是这样使用它的:

代码语言:javascript
复制
var email = provider.dom.email(mId);
console.log(email);

console.log真的很令人惊讶。我希望看到$.extend部分中的函数。在该位置,显示的函数是在api.dom对象、email()本身、compose等上注册的函数。

我完全不明白为什么会发生这样的事情。感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-27 19:13:49

扩展的是prototype。这些函数在使用new创建实例时可用。因此,使用new执行console.log(api.dom.email.prototype);或创建一个新实例。

代码语言:javascript
复制
var email = new provider.dom.email(mId);
console.log(email);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39723118

复制
相关文章

相似问题

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