var test = (function(){
this.message = function(){
alert('hi');
};
})();
我有2個問題哪裏JavaScript函數和居住的價值是什麼
- 哪裏上面的函數去?它是否通過類名測試進入dom?
- 如何每次創建一個新對象並調用該函數。
我想要做的是創建一個類似數據結構的類,使用模塊化JavaScript創建對象。 我已經嘗試了上面的代碼,但是,我覺得我得到窗口對象中的消息函數而不是整個類。
var test = (function(){
this.message = function(){
alert('hi');
};
})();
我有2個問題哪裏JavaScript函數和居住的價值是什麼
我想要做的是創建一個類似數據結構的類,使用模塊化JavaScript創建對象。 我已經嘗試了上面的代碼,但是,我覺得我得到窗口對象中的消息函數而不是整個類。
讓我們重寫代碼分爲以下大致相當於:
var test;
function foobar()
{
this.message = function() {
alert('hi');
}
}
foobar();
的foobar
功能表示被立即調用的匿名函數。
在函數內部,this
將引用window
(在瀏覽器中),因此有效地把它添加了message
功能window
,實現如下:
window.message = function() {
alert('hi');
};
但是,如果你想創建你需要的對象使用new
,如:
function test()
{
this.message = function() {
alert('hi');
};
}
var x = new test();
x.message(); // alerts hi
正如在評論中提到NULL,則建議在使用標題的套管功能與new
一起使用,即function Test() { ... }
。
這實際上是一個真正的很好的答案,但請始終使用大寫第一個字的類,例如< - – andlrc
謝謝,實際上我是新來的JavaScript,我想知道這非常簡單的說明。感謝大家 – user799329
嗯「它是否與類名測試一起進入dom?」是什麼讓你這麼想的? :) –
'message'會被添加到全局對象('window')中,因爲你在不使用'bind()'''call()'或'apply()的情況下在自調用匿名函數中引用'this' )'。這段代碼是一個相當複雜的設計,你能詳細說明你想用它達到什麼嗎? –
你剛剛寫了純javascript ...你爲什麼提到DOM? –