2014-10-18 93 views
1

嗨我是新來的JavaScript應用程序開發..我已經做了一些JavaScript代碼,但不幸的是它會拋出一些錯誤函數調用錯誤

我所使用的代碼

var c = (function() { this.name = function() { console.log('yay'); } }()); 

,當我打電話函數c它拋出錯誤的例子,如Uncaught TypeError: undefined is not a function

爲什麼不能創建函數c的實例?

謝謝你的幫助..

+0

'C'是不是一個功能,你需要刪除的自我執行,我的意思'()'在expresion – Grundy 2014-10-18 13:53:16

回答

0

似乎你誤解了IIFE的概念。您需要Object

var c = { 
    name: function() { 
     console.log('yay'); 
    } 
}; 
c.name(); // yay 

但是,如果你需要去與function,那麼你就需要一個構造函數,這將被用new運營商調用。

+0

結束時,我想用像(函數() {this.name = function(){就像那樣..有可能嗎?我不想把它當做對象 – 2014-10-18 13:36:21

+0

有些東西,你必須做才能達到你想要的。AFAIK,這是不可能的('c .name()') – 2014-10-18 13:39:34

0

使用thisss

var c = function() { 
     this.name = function() { 
      console.log('yay'); 
     } 
     }; 
newFunction=new c(); 

newFunction.name() 
+0

請參閱我想使用like(function(){this.name = function(){like that ..is有可能嗎? – 2014-10-18 13:36:06

+0

不,如果您使用var它不是這個 – 2014-10-18 13:39:50

0

因爲,它關閉,您不能分配給變量var c。如果遵循該模式,則必須在該(function() {})的範圍內包含函數/操作。

更多關於-http://javascriptissexy.com/understand-javascript-closures-with-ease/

要使用這個,你可以修改js來這樣。

var c = (function() { 
 
    var name; 
 

 
    function setName(val) { 
 
    name = val; 
 
    } 
 
    return { 
 
    print: function() { 
 
     setName("yay"); 
 
     console.log(name); 
 
    } 
 
    }; 
 
})(); 
 
console.log(c); 
 
c.print();

你的情況