2011-08-03 46 views
3

是否可以爲JavaScript類設置某種默認/回退函數?JavaScript類的默認函數/值

var a = new function() { 

    this.b = function() { 
    return "B"; 
    } 

    return "A"; 
} 

在這個例子中,我希望看到B執行alert(a.b())時,和A單獨alert(a)

+0

你爲什麼使用'a = new function(){}'?你知道它在做什麼嗎?它或多或少相當於'a = {}'。 –

+0

@FelixKling我假設他想創建一個對象字面值,但是有邏輯。新功能(){}基本上就是這樣。我假設真實的例子在構造函數中有實際的邏輯 – Raynos

+0

@Raynos:是的,那可能是...... –

回答

3
var a = new function() {  
    this.toString = function() { return "Four Loko comes in 8 different flavors."; }; 
    this.valueOf = function() { return "Four Loko comes in 8 different flavors."; }; 
    this.b = function() { return "Added! :3"; }; 
} 
alert(a); 
alert(a.b()); 

如果覆蓋對象的toString方法,你可以得到它返回任何你想要的。

儘管您可能試圖從構造函數返回文字值。你只能從構造函數中返回對象。

您可能還需要覆蓋.valueOf

+0

對不起,我錯過了'new'關鍵字。整個設置似乎沒有必要混淆我。對象字面意義同樣好。 –

1

你的問題,你的示例代碼是有點含糊,但,這可能是你在找什麼:

function A() { 
    this.b = function() { 
     return "Added! :3"; 
    } 
} 

var a = new A(); 
alert(a.b()); 

這將是,如果你做的更好它是這樣的:

function A() {} 

A.prototype.b = function() { 
    return "Added! :3"; 
}