2016-09-27 55 views
0

我對某些項目使用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,等等。

我不明白爲什麼會發生這種情況。感謝任何幫助。

回答

3

這是已被擴展的prototype。這些功能在使用new創建實例時可用。所以做一個console.log(api.dom.email.prototype);或創建一個新的實例new

var email = new provider.dom.email(mId); 
console.log(email); 
+0

太棒了!爲什麼我不能給你+50?非常感謝 –

+1

我不知道,但它會很好! ;)不客氣,@JeremyBelolo – eisbehr