相對JS新手試圖瞭解定義JS對象的兩種方法之間的區別...瞭解JS對象VS沒有定義爲功能這裏
在某些情況下,我已經看到了我所說的例子「命名空間」對象或「處理」,可能是這個樣子:
var example = {
message: null,
setup: function(message) {
example.message = message;
alert(message);
}
}
我可能會使用這樣的事情將一些相關的功能。如果我打電話給example('foo!')
,我希望會有一個提示消息foo!
出現,如果我打電話給example.message
,我預計它會返回foo!
。
我的第一個問題是:什麼是這種類型的對象(沒有定義爲函數)調用?
我在網站上使用對象像這樣的很多,因爲處理程序設置一組綁定的Ajax交互等。我一直在試圖瞭解面向對象的JavaScript,並且一直在做一些閱讀(1 ,2)。在Mozilla文檔它的建議的對象應該定義爲功能,所以更喜歡這樣的:
var example = function(message) {
....
}
我的第二個問題是:這是什麼樣的對象(定義爲一個功能)的叫什麼?
我真的不明白這兩個,所以我有一些問題,這引起了問題3的區別:
如果你定義一個對象的功能,你如何定義屬性在對象上,如果你不一定希望它們在實例化時執行?
即,如果我這樣做:
var example = function(message) {
alert('message');
}
後來我知道,example('foo!')
會觸發警報與foo!
。但是,如何在對象上定義其他屬性或方法以便稍後訪問和/或調用?
這是非常有用的,謝謝!一個小的子問題,在對象字面量和函數表達式之間是否存在主要的*陷阱*或棘手的區別? IE瀏覽器。因爲我習慣於使用obj。文字是否有什麼我應該特別警惕的,如果我嘗試使用函數表達式? – Andrew 2012-04-22 19:57:40
也許值得注意的是,如果你從'e = new example'中省略'new',''''''''''''''''''''''這個''是指全局對象('window')。 – Lekensteyn 2012-04-22 19:57:48