Javascript中valueOf与toString区别浅析_javascript技巧
前言
基本上,所有JS数据类型都拥有这两个方法,null除外。它们俩解决javascript值运算与显示的问题,重写会加大它们调用的优化。
测试分析
先看一例:
var aaa = {
i: 10,
valueOf: function() { return this.i+30; },
toString: function() { return this.valueOf()+10; }
}
alert(aaa > 20); // true
alert(+aaa); // 40
alert(aaa); // 50
之所以有这样的结果,因为它们偷偷地调用valueOf或toString方法。
但如何区分什么情况下是调用了哪个方法呢,我们可以通过另一个方法测试一下。
由于用到console.log,请在装有firebug的FF中实验!
var bbb = {
i: 10,
toString: function() {
console.log('toString');
return this.i;
},
valueOf: function() {
console.log('valueOf');
return this.i;
}
}
alert(bbb);// 10 toString
alert(+bbb); // 10 valueOf
alert(''+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方法……另一个我们暂时可以理解为===操作符不进行隐式转换,因此不调用它们。为了追究真相,我们需要更严谨的实验。
var aa = {
i: 10,
toString: function() {
console.log('toString');
return this.i;
}
}
alert(aa);// 10 toString
alert(+aa); // 10 toString
alert(''+aa); // 10 toString
alert(String(aa)); // 10 toString
alert(Number(aa)); // 10 toString
alert(aa == '10'); // true toString
再看valueOf。
var bb = {
i: 10,
valueOf: function() {
console.log('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那里继承过来的,我们再去掉它看看。
Object.prototype.toString = null;
var cc = {
i: 10,
valueOf: function() {
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。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Konvertieren Sie grundlegende Datentypen mit der Java-Funktion String.valueOf() in Strings. Wenn wir in der Java-Entwicklung grundlegende Datentypen in Strings konvertieren müssen, ist eine gängige Methode die Verwendung der Funktion valueOf() der String-Klasse. Diese Funktion kann Parameter grundlegender Datentypen akzeptieren und die entsprechende Zeichenfolgendarstellung zurückgeben. In diesem Artikel untersuchen wir, wie die Funktion String.valueOf() für grundlegende Datentypkonvertierungen verwendet wird, und stellen einige Codebeispiele dafür bereit

Konvertieren Sie eine Zeichenfolge mit der Java-Funktion Boolean.valueOf() in einen booleschen Wert. Bei der Java-Programmierung kommt es häufig vor, dass Sie eine Zeichenfolge in einen booleschen Wert konvertieren müssen. Java bietet mit der Funktion Boolean.valueOf() eine praktische Möglichkeit, diese Anforderung zu erfüllen. Diese Funktion kann einen durch eine Zeichenfolge dargestellten booleschen Wert in den entsprechenden booleschen Typ konvertieren. Schauen wir uns die Verwendung von Boolean.valueOf() genauer an. Gegeben eine Zeichenfolge, wir

1. Das Konzept besteht darin, ein einzelnes Aufzählungsobjekt über eine Zeichenfolge zu erhalten. Es gibt drei Syntaxformen. 2. Parameter i, die Ganzzahl des Integer-Objekts. s, eine Zeichenfolge von Integer-Objekten. radix, die Basisnummer, die beim Parsen der Zeichenfolge s verwendet wird, wird verwendet, um die verwendete Basisnummer anzugeben. 3. Der Rückgabewert ist eine ganzzahlige Objektausnahme, die durch einen Zeichenfolgenparameter dargestellt wird. Wenn die Zeichenfolge nicht analysiert werden kann, wird eine NumberFormatException-Ausnahme ausgelöst. 4. Instanz publicenumSignal{// Definieren Sie einen Aufzählungstyp GREEN, YELLOW, RED; ]args ){Signalgreen=Sig

Konvertieren Sie einen StringBuffer mit der toString()-Methode der StringBuffer-Klasse. In Java ist die StringBuffer-Klasse eine Klasse, die zur Verarbeitung veränderlicher Strings verwendet wird. Sie bietet viele praktische Methoden zum Ändern und Bearbeiten von Strings. Wenn wir ein StringBuffer-Objekt in einen String konvertieren müssen, können wir dazu die Methode toString() verwenden. Die toString()-Methode der StringBuffer-Klasse gibt a zurück

Konvertieren Sie ein Zeichenarray in einen String mit der Java-Funktion String.valueOf(). In der Java-Programmierung müssen wir häufig ein Zeichenarray in einen String konvertieren. Glücklicherweise bietet Java eine praktische Methode String.valueOf(), um diese Funktion zu erreichen. In diesem Artikel erklären wir, wie man mit der Funktion String.valueOf() ein Zeichenarray in einen String umwandelt und stellen entsprechende Codebeispiele bereit. Die Funktion String.valueOf() ist

Verwenden Sie die String.valueOf()-Funktion von Java, um andere Typen in Zeichenfolgen zu konvertieren. In der Java-Entwicklung müssen häufig andere Datentypen in Zeichenfolgen konvertiert werden. Um diesen Bedarf zu decken, stellt Java die Funktion String.valueOf() zur Implementierung der Typkonvertierung bereit. In diesem Artikel wird erläutert, wie Sie mit der Funktion String.valueOf() andere Typen in Zeichenfolgen konvertieren, und es werden Codebeispiele bereitgestellt. Konvertieren eines Basisdatentyps in einen String Schauen wir uns zunächst an, wie man einen Basisdatentyp in einen String konvertiert

Simulieren Sie die Implementierung der Tostring-Funktion publicstaticStringmyToString(int[]array){Stringstr="[";for(inti=0;i

1. Beschreibung Funktion 1 kann in einen String umgewandelt werden. Funktion 2 kann den Wert in einen String mit verschiedenen Basiszahlen (oktale Dezimalzahl usw.) umwandeln. 2. Syntax StringtoString() staticStringtoString(inti) 3. Parameter i – die Ganzzahl zu konvertiert werden. 4. Rückgabewert toString(): Gibt ein String-Objekt zurück, das einen Integer-Wert darstellt. toString(inti): Gibt ein String-Objekt zurück, das den angegebenen int darstellt. 5. Beispiel importjava.util.Arrays; publicclassArrayPrint{publicstaticvoidmain(Str
