摘要:中這樣描述和調用方法用來把對象轉換成原始類型的值數值字符串和布爾值。你很少需要自己調用此函數當遇到一種需要轉換成一個原始值情況時候,會自動調用此函數。默認情況下會被每個對象繼承。
MDN 中這樣描述 valueOf() 和 toString():
JavaScript 調用 valueOf() 方法用來把對象轉換成原始類型的值(數值、字符串和布爾值)。 你很少需要自己調用此函數;當遇到一種需要轉換成一個原始值情況時候, JavaScript 會自動調 用此函數。 默認情況下, valueOf() 會被每個對象Object繼承。每一個內置對象都會覆蓋這個方法為了返回 一個合理的值,如果對象沒有原始值,valueOf() 就會返回對象自身; 每個對象都有一個 toString() 方法,當對象被表示為文本值時或者當以期望字符串的方式引用 對象時,該方法被自動調用。默認情況下,toString() 方法被每個繼承自Object的對象繼承。如 果此方法在自定義對象中未被覆蓋,toString() 返回 "[object type]",其中type是對象類型
簡單的說:
valueOf()函數用于返回指定對象的原始值;
toString()函數用于返回指定對象的字符串;
對象 | valueOf() 返回值 | toString() 返回值 |
---|---|---|
Number | 數字值(number) | 數字值(string) |
String | 字符串值 | 字符串值 |
Boolean | 布爾值 | 字符串值 |
Object | 對象本身 | 字符串值 |
Function | 函數本身 | 字符串值 |
Date | 以毫秒數存儲的時間值(number) | 標準時間輸出(string) |
// Number var num = 15.26540, num2 = new Number(15.26540); console.log( "valueOf", num.valueOf() === num ); // true number類型 console.log( "toString", num.toString() === num );// false string類型 console.log( "valueOf", num2.valueOf() === num2 ); // false number類型 console.log( "toString", num2.toString() === num2 );// false string類型 console.log( num.valueOf() === num.toString());// false console.log( num2.valueOf() === num2.toString());// false // String var str = "abcd", str2 = new String("abcd"); console.log( "valueOf", str.valueOf() === str );// true string類型 console.log( "toString", str.toString() === str );// true string類型 console.log( "valueOf", str2.valueOf() === str2 );// false string類型 console.log( "toString", str2.toString() === str2 );// false string類型 console.log( str.valueOf() === str.toString());// true console.log( str2.valueOf() === str2.toString());// true // Boolean var bool = true, bool2 = new Boolean(true); console.log( "valueOf", bool.valueOf() === bool );// true string類型 console.log( "toString", bool.toString() === bool );// false string類型 console.log( "valueOf", bool2.valueOf() === bool2 );// false boolean類型 console.log( "toString", bool2.toString() === bool2 );// false string類型 console.log( bool.valueOf() === bool.toString());// false console.log( bool2.valueOf() === bool2.toString());// false // Object var obj = {name: "張三", age: 18}; console.log( "valueOf", obj.valueOf() === obj );// true object類型 console.log( "toString", obj.toString() === obj );// false string類型 console.log( obj.valueOf() === obj.toString());// false // Function var fn = function(){}, fn2 = new Function("x", "y", "return x+y") console.log( "valueOf", fn.valueOf() === fn );// true object類型 console.log( "toString", fn.toString() === fn );// false string類型 console.log( "valueOf", fn2.valueOf() === fn2 );// true object類型 console.log( "toString", fn2.toString() === fn2 );// false string類型 console.log( fn.valueOf() === fn.toString());// false console.log( fn2.valueOf() === fn2.toString());// false // Date var date = new Date(); console.log( "valueOf", date.valueOf() );// 1501830320383 number類型 console.log( "toString", date.toString() );// Fri Aug 04 2017 15:05:45 GMT+0800 (中國標準時間) string類型 console.log( date.valueOf() === date.toString());// false
移步:valueOf() / toString()深入分析對比
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84658.html
摘要:一寫在前面最近重讀高級程序設計,總結下來,查漏補缺。但這種影響是單向的修改命名參數不會改變中對應的值。這是因為對象的長度是由傳入的參數個數決定的,不是由定義函數時的命名參數的個數決定的。實際改變會同步,改變也會同步 一、寫在前面 最近重讀《JavaScript高級程序設計》,總結下來,查漏補缺。 二、JS簡介 2.1 JS組成 ECMAscript:以ECMA-262為基礎的語言,由...
摘要:為了每個對象都能通過來檢測,需要以或者的形式來調用,傳遞要檢查的對象作為第一個參數,稱為。對象都是動態的,這就意味著每次訪問對象,都會運行一次查詢。是語言中立的用于訪問和操作和文檔。 一、第三章 基本概念: 1.理解參數 1.1 可以向函數中傳遞任意數量的參數,并且可以通過arguments對象來訪問這些參數。 1.2 arguments對象只是類似數組,它通過length來確定傳進來...
摘要:寫在開頭本篇是小紅書筆記的第六篇,也許你會奇怪第六篇筆記才寫語法基礎,筆者是不是穿越了。可移步筆者的文章中替換方式參考文檔高級程序設計作者以樂之名本文原創,有不當的地方歡迎指出。 showImg(https://segmentfault.com/img/bVblGMc?w=600&h=400); 寫在開頭 本篇是小紅書筆記的第六篇,也許你會奇怪第六篇筆記才寫語法基礎,筆者是不是穿越了。...
摘要:默認情況下,方法以十進制格式返回數值的字符串表示。注意,默認的沒有參數的輸出值與指定基數時的輸出值相同。但是,在上,他們兩個表現出了截然不同的形式,在對一個對象類型進行時,直接返回原對象,而則返回。 toString()方法 要把一個值轉換為一個字符串,最常用的就是,使用幾乎每個值都有的toString()方法,這個方法唯一要做的就是返回相應值的字符串表現。 數值、布爾值、對象和字符串...
摘要:要比較相等性之前,不能將和轉換成其他任何值。如果有一個操作數是,則相等操作符返回,而不相等操作符返回。重要提示即使兩個操作數都是,相等操作符也返回因為按照規則,不等于。 關系運算符 關系運算符有小于()、小于等于(=)四種,它們都返回一個布爾值 《javascript高級程序設計》書中的規則是這樣描述運算規則: (1)如果兩個操作數都是數值,則執行數值比較; (2)如果兩個操作數都是字...
閱讀 2885·2021-10-18 13:33
閱讀 841·2019-08-30 14:20
閱讀 2620·2019-08-30 13:14
閱讀 2512·2019-08-29 18:38
閱讀 2879·2019-08-29 16:44
閱讀 1206·2019-08-29 15:23
閱讀 3466·2019-08-29 13:28
閱讀 1909·2019-08-28 18:00