我正在使用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
等等。
我根本不明白为什么会这样。提前感谢您的帮助。
答案 0 :(得分:3)
已扩展prototype
。使用new
创建实例时,这些功能可用。这样做console.log(api.dom.email.prototype);
或使用new
创建新实例。
var email = new provider.dom.email(mId);
console.log(email);