前言
基本上,所有JS資料型別都擁有這兩種方法,null除外。它們兩個解決javascript值運算與顯示的問題,重寫會增加它們所呼叫的最佳化。
檢定分析
先看一個例子:
toString: function() { return this.valueOf() 10; }
}
alert(aaa > 20); // true
alert( aaa); // 40 alert(aaa); // 50
之所以有這樣的結果,因為它們偷偷地呼叫valueOf或toString方法。
但如何區分什麼情況下是呼叫了哪個方法呢,我們可以用另一個方法測試一下。
return this.i;
},
valueOf: function() {
cons> valueOf: function() {
valueOf');
return this.i;
}
}
alert(bbb);// 10 toString
alert( bbb); // 10 valueOfalert('' bbb); // 10 valueOf
alert(String(bbb)); / / 10 toString
alert(Number(bbb)); // 10 valueOf
alert(bbb == '10'); // true valueOf
alert(bbb === '10'); / / false
結果給人的感覺是,如果轉換為字串時呼叫toString方法,如果是轉換為數值時則呼叫valueOf方法,但其中有兩個很不和諧。一個是alert('' bbb),字串合拼應該是呼叫toString方法…另一個我們暫時可以理解為===運算子不進行隱式轉換,因此不呼叫它們。為了追究真相,我們需要更嚴謹的實驗。
return this.i;
}
}
alert(aa)/// 10 toString
}
alert(aa);// 100 to >alert( aa); // 10 toString
alert('' aa); // 10 toString
alert(String(aa)); // 10 toString
alert(Number(aa)); // 10 toString
alert(aa == '10'); // true toString
再看valueOf。
return this.i;
}
}
}
alert(bb);// [object Object]
alert( bb); // 10 valueOf alert('' bb); // 10 valueOf
alert(String(bb)) ; // [object Object]
alert(Number(bb)); // 10 valueOf
alert(bb == '10'); // true valueOf
發現有點不同吧? !它沒有像上面toString那樣統一規整。
對於那個[object Object],我估計是從Object那裡繼承過來的,我們再去掉它看看。
console.log('valueOf');
return this.i;
}
alert(cc);// 10 valueOf
alert( cc); // 10 valueOf
alert('' cc); // 10 valueOf alert(String(cc) ); // 10 valueOf
alert(Number(cc)); // 10 valueOf
alert(cc == '10'); // true valueOf
總結:valueOf偏向運算,toString偏向顯示。
1、 在進行物件轉換時(例如:alert(a)),將優先呼叫toString方法,如若沒有重寫toString將呼叫valueOf方法,如果兩個方法都不沒有重寫,但按Object的toString輸出。
2、 進行強轉字串型別時將優先呼叫toString方法,強轉為數字時優先呼叫valueOf。
3、 在有運算運算元的情況下,valueOf的優先權高於toString。

使用Java的String.valueOf()函数将基本数据类型转换为字符串在Java开发中,当我们需要将基本数据类型转换为字符串时,一种常见的方法是使用String类的valueOf()函数。这个函数可以接受基本数据类型的参数,并返回对应的字符串表示。在本文中,我们将探讨如何使用String.valueOf()函数进行基本数据类型转换,并提供一些代码示例来

使用Java的Boolean.valueOf()函数将字符串转换为布尔值在Java编程中,经常会遇到需要将字符串转换为布尔值的情况。而Java提供了一个便捷的方法来实现这一需求,即使用Boolean.valueOf()函数。该函数可以将字符串表示的布尔值转换为对应的布尔类型。下面我们来详细了解一下Boolean.valueOf()的用法。给定一个字符串,我们

1、概念通过字符串获取单个枚举对象,语法形式有三种。2、参数i,Integer对象的整数。s,Integer对象的字符串。radix,在解析字符串s时使用的进制数,用于指定使用的进制数。3、返回值一个由字符串参数代表的整数对象异常,如果不能解析字符串,则抛出NumberFormatException异常4、实例publicenumSignal{//定义一个枚举类型GREEN,YELLOW,RED;publicstaticvoidmain(String[]args){Signalgreen=Sig

使用StringBuffer类的toString()方法将StringBuffer转换为字符串在Java中,StringBuffer类是用于处理可变字符串的类,它提供了许多方便的方法来修改和操作字符串。当我们需要将一个StringBuffer对象转换为字符串时,可以使用toString()方法来实现。StringBuffer类的toString()方法返回一

使用Java的String.valueOf()函数将字符数组转换为字符串在Java编程中,我们经常需要将字符数组转换为字符串。幸运的是,Java提供了一个方便的方法String.valueOf()来实现这个功能。在本文中,我们将介绍如何使用String.valueOf()函数将字符数组转换为字符串,并提供相应的代码示例。String.valueOf()函数是

使用Java的String.valueOf()函数将其他类型转换为字符串在Java开发中,经常会遇到将其他数据类型转换为字符串的需求。为了满足这一需求,Java提供了String.valueOf()函数来实现类型转换。本文将介绍如何使用String.valueOf()函数将其他类型转换为字符串,并提供代码示例。将基本数据类型转换为字符串首先,我们来看如何将基

模拟实现tostring函数publicstaticStringmyToString(int[]array){Stringstr="[";for(inti=0;i

1.说明作用一可以转换为字符串作用二可以将数值转换为不同的进制数的字符串(八进制十进制等)2.语法StringtoString()staticStringtoString(inti)3.参数i--要转换的整数。4.返回值toString():返回表示Integer值的String对象。toString(inti):返回表示指定int的String对象。5.实例importjava.util.Arrays;publicclassArrayPrint{publicstaticvoidmain(Str


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

記事本++7.3.1
好用且免費的程式碼編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能