2016-04-05 103 views
0

我是Javascript新手,我想通過對象發送參數。 我也試圖創建我的對象,但不幸的是它沒有工作。下面的代碼:通過對象發送參數

var obj = (function(foo) { 

    var str = foo; 

    var bar = function() { 
     alert(this.str+" Bar"); 
    } 

})(); 

當我打電話obj('foo').bar();,我希望它產生foo的酒吧。怎麼做?

回答

2

這應該解決您的問題:

var obj = function(foo) { 
 
    return { 
 
    bar: function() { 
 
     alert(foo + ' Bar'); 
 
    } 
 
    } 
 
} 
 

 
obj('foo').bar();

編輯:您還可以使用 「運行代碼snippent」,以測試它:)爲

0

有噸的解決方案你的情況。我會提供我最喜歡的一個。

var obj = function(foo) { 
 
    if (!(this instanceof obj)) { 
 
    return new obj(foo); 
 
    } 
 
    this.str = foo; 
 
} 
 
obj.prototype.bar = function() { 
 
    alert(this.str + " Bar"); 
 
}; 
 
obj('foo').bar(); 
 
//or 
 
new obj('foo').bar();

+0

感謝您的幫助,我相信您提供更好的解決方案。但是當第2行被執行?什麼是obj.prototype?你永遠不會聲明它 – Mdkusuma

+0

@Mdkusuma當你調用'obj('foo')'沒有關鍵字'new'時。關於原型對象,您可以閱讀[本文](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype)以獲取更多信息。 – Lewis