我不知道是否有可能創建例如myObject的對象(),它可以像JavaScript的Date對象時,我們+(new MyObject())
喜歡:如何創建一個JavaScript對象,如Date()?
var a = new Date();
alert(+a);
我不知道是否有可能創建例如myObject的對象(),它可以像JavaScript的Date對象時,我們+(new MyObject())
喜歡:如何創建一個JavaScript對象,如Date()?
var a = new Date();
alert(+a);
你的對象需要有一個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
創建一個函數,它改變了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)
這很有趣,但我想整數表示我的對象是我想要的東西。正如@Augustus所回答的,我需要'valueOf()' –
'當'valueOf'不存在時調用'toString'。奧古斯都的解決方案不具有便攜性,因爲它不使用原型。 –
真的嗎?我使用'this.prototype.valueOf()'它的工作,但我會尋找任何可移植性問題,並會在這裏注意,如果有任何。 –
這裏是解決方案,
var MyObject = Date;
var b= new MyObject();
alert(+b) //It will display the current date in milliseconds;
希望這有助於你。
我覺得OP想要創建自己的對象,它被轉換爲一些數值。他不想讓它成爲*日期。 –
是的,我想要我自己的物體。 –
Nitpicking,但您可以使用對象文字。或者,堅持原始問題,創建一個構造函數並在'prototype'上定義'valueOf'。否則爲+1。 –
這正是我想要的,謝謝 –
@IonuţG. Stan:您可以使用任何構造,產生具有定義的'valueOf'方法的對象。實際上,我的例子使用了一個構造函數(沒有名字)爲每個對象創建一個'valueOf'方法。您可以在'prototype'內創建方法以跨實例分享,但我希望儘可能簡單並使用構造函數。 –