2011-10-01 28 views

回答

8

你的對象需要有一個valueOf方法,像這樣:

var f=new function(){ 
    this.valueOf=function(){ 
     return 5; 
    } 
}; 
alert(+f); // Displays 5 

如果你不想定義對象上,而在其方法爲prototype的意見建議,請使用以下:

function MyObject(value){ 
    this.value = value; 
} 
MyObject.prototype.valueOf = function(){ 
    return this.value 
} 

var o = new MyObject(17); 
alert(+o); // Displays 17 
+0

Nitpicking,但您可以使用對象文字。或者,堅持原始問題,創建一個構造函數並在'prototype'上定義'valueOf'。否則爲+1。 –

+0

這正是我想要的,謝謝 –

+0

@IonuţG. Stan:您可以使用任何構造,產生具有定義的'valueOf'方法的對象。實際上,我的例子使用了一個構造函數(沒有名字)爲每個對象創建一個'valueOf'方法。您可以在'prototype'內創建方法以跨實例分享,但我希望儘可能簡單並使用構造函數。 –

1

創建一個函數,它改變了this財產。在使用function(){}定義函數之後,使用prototype向其添加方法。

通常情況下,使用關鍵字new創建的函數實例將返回一個Object,該Object在已定義的函數中返回this。當你定義一個toString方法,該功能會顯示從一個字符串上下文(默認[object Object]內調用時自定義字符串

例:

function MyClass(value){ 
    this.value = value 
    this.init_var = 1; 
} 
MyClass.prototype.getInitVar = function(){ 
    return this.init_var; 
} 
MyClass.prototype.setInitVar = function(arg_var){ 
    this.init_var = arg_var; 
} 
MyClass.prototype.toString = function(){ 
    return "This class has the following property: " + this.init_var; 
} 

var class_instance = new MyClass(); 
class_instance.setInitVar(3.1415); 
alert(class_instance) 
+0

這很有趣,但我想整數表示我的對象是我想要的東西。正如@Augustus所回答的,我需要'valueOf()' –

+0

'當'valueOf'不存在時調用'toString'。奧古斯都的解決方案不具有便攜性,因爲它不使用原型。 –

+0

真的嗎?我使用'this.prototype.valueOf()'它的工作,但我會尋找任何可移植性問題,並會在這裏注意,如果有任何。 –

0

這裏是解決方案,

var MyObject = Date; 
var b= new MyObject(); 
alert(+b) //It will display the current date in milliseconds; 

希望這有助於你。

+0

我覺得OP想要創建自己的對象,它被轉換爲一些數值。他不想讓它成爲*日期。 –

+0

是的,我想要我自己的物體。 –

相關問題