2017-01-23 78 views
0

當我使用String構造函數時,我總是想知道它是如何製作的。它返回的字符串作爲參數指定,儘管它與「new」運算符類似:構造函數返回值不是「[Object object]」

var str = new String("Hello World") 
    //str == "Hello World" 

如果我做一個構造函數,我給它返回一個返回值的對象實例化時:

function CreateString(st) { 
    return ''+st 
    } 
    var MyString = new CreateString("Hello there!") 
    //MyString == "[Object object]" 

我怎樣才能創建一個返回除此之外值的構造函數[Object對象] ?

更新: 我試圖創建一個具有兩個屬性的值等本身就是一個構造函數:

function MyConstructor() { 
    this.myMethod = function() { 
    return 73 
    } 
    return 25 
    } 
    /*I want MyConstructor to have the value 25 and the myMethod method */ 
    alert(MyConstructor()) // to be 25 
    alert(MyConstructor().myMethod()) //to be 73 
+0

有非常,非常少的原因,以創建String實例。 – Pointy

+0

你想做什麼?創建一個新的'類'或只是創建一個對象以外的東西? – Shilly

回答

1

您可以替換所需類toString()函數定義。

function CreateString() { 
    function toString() { return 'foo' } 
} 

例子:Number.prototype.toString()

+0

是的。這工作。但構造函數本身總是返回對象 –

+0

@MichaelRitter請參閱http://stackoverflow.com/a/6307570/2013580和http://stackoverflow.com/questions/332422 – zurfyx

+0

這些鏈接應顯示給我什麼?僅僅因爲一個類有一個toString方法,構造函數仍然返回一個類實例,而不是toString()調用的值(除非您打印它,它會自動調用.toString()) –

0

通過這條線

var MyString = new CreateString("Hello there!") 

你不能簡單地調用函數CreateString,你要創建的 '類型' CreateString(的一個實例的新對象功能)。

我猜你想要的只是

var MyString = CreateString("Hello there!") 
相關問題