我正在使用gmail.js做一些项目。在库中,有一个如下所示的函数:
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;在我的代码中,我是这样使用它的:
var email = provider.dom.email(mId);
console.log(email);console.log真的很令人惊讶。我希望看到$.extend部分中的函数。在该位置,显示的函数是在api.dom对象、email()本身、compose等上注册的函数。
我完全不明白为什么会发生这样的事情。感谢您的帮助。
发布于 2016-09-27 19:13:49
扩展的是prototype。这些函数在使用new创建实例时可用。因此,使用new执行console.log(api.dom.email.prototype);或创建一个新实例。
var email = new provider.dom.email(mId);
console.log(email);https://stackoverflow.com/questions/39723118
复制相似问题