valueOf函式詳解

2022-03-07 15:13:50 字數 2481 閱讀 7294

在型別轉換中,經常用到方法valueof()和他tostring(),所有物件(包括基本包裝型別)都擁有這兩個方法。這篇文章我們先看看valueof()方法。valueof()方法會將物件轉換為基本型別,如果無法轉換為基本型別,則返回原物件。

var obj = new boolean(true);

console.log(obj.valueof());//true

console.log(typeof obj.valueof());//boolean

//如果是包裝型別的基本型別,則返回原基本型別值

var a = true;

console.log(a.valueof());//true

console.log(typeof a.valueof());//boolean

如果是基本包裝型別對應的基本型別,會返回原值。但這並不代表基本型別擁有valueof()方法(基本型別不是物件,不擁有任何方法),而是在讀取乙個基本型別值時,後台會建立乙個對應的基本包裝型別的物件,從而呼叫一些方法。所以,基本型別「呼叫」valueof()方法時,實際上是先建立了乙個對應的基本包裝型別,由此基本包裝型別呼叫valueof(),最後返回了其對應的基本型別,看起來就好像是基本型別呼叫了valueof()方法而得到了原始值。

var obj = new string("hello");

console.log(obj.valueof());//hello

console.log(typeof obj.valueof());//string

//如果是包裝型別的基本型別,則返回原基本型別值

var a = "hello";

console.log(a.valueof());//hello

console.log(typeof a.valueof());//string

同,string基本包裝型別和基本型別呼叫valueof()方法都返回對應的基本型別

var obj = new number("123");

console.log(obj.valueof());//123

console.log(typeof obj.valueof());//number

//如果是包裝型別的基本型別,則返回原基本型別值

var a = 123;

console.log(a.valueof());//123

console.log(typeof a.valueof());//number

同,number基本包裝型別和基本型別呼叫valueof()方法都返回對應的基本型別。

注意,如果直接用整數呼叫時,要加上括號,否則會報錯。因為整數後面的點會識別為小數點。浮點型不會報錯。

console.log(123.valueof());//uncaught syntaxerror

console.log((123).valueof());//123

console.log(12.3.valueof());

var a = [1];

console.log(a.valueof());//[1]

console.log(a === a.valueof());//true

var a = function(){};

console.log(a.valueof());//function(){};

console.log(a === a.valueof());//true

var a = /a/g;

console.log(a.valueof());///a/g

console.log(a === a.valueof());//true

物件object型別

var obj = ;

console.log(obj.valueof());//object

console.log(obj === obj.valueof());//true

var obj = newdate();

console.log(obj);//wed may 10 2017 12:19:05 gmt+0800 (中國標準時間)

console.log(obj.valueof());//1494389910179

console.log(obj === obj.valueof());//false

console.log(obj.gettime() === obj.valueof());//true

1)undefined和null沒有此方法(基本型別肯定沒有方法,string、number和boolean是因為有對應的基本包裝型別,才可以呼叫方法);

2)基本包裝型別和對應的基本型別,呼叫valueof()返回對應的基本型別值;

3)物件型別(除date型別)返回原物件;

4)date型別返回表示日期的毫秒數

java parseInt和valueof的區別

他們返回型別的不同是最大的原因 static int parseint string s 將字串引數作為有符號的十進位制整數進行分析。static integer valueof int i 返回乙個表示指定的 int 值的 integer 例項。static integer valueof str...

JS重寫函式valueOf方法實現連續呼叫求和

var obj valueof function alert obj 呼叫了 obj.tostring 呼叫了 obj.valueof 彈出110從上面 可看出輸出obj時,先呼叫其tostring方法,若tostring返回原始值就直接返回,否則繼續呼叫valueof方法。var obj valu...

valueOf 方法的使用

valueof 方法的使用 undefined和null沒有valueof 方法,使用會報錯 布林型別true和false會返回原值 字串型別會返回原值 數字 如果是整數,需要用小括號將數字包起來再使用valueof 方法,直接在數字後面跟.valueof 會報錯 如果是小數會返回原值 物件obje...