在型別轉換中,經常用到方法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 syntaxerrorconsole.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...