Heim Web-Frontend js-Tutorial Javascript中valueOf与toString区别浅析_javascript技巧

Javascript中valueOf与toString区别浅析_javascript技巧

May 16, 2016 pm 05:40 PM
tostring valueof

前言

基本上,所有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。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Konvertieren Sie grundlegende Datentypen mit der Java-Funktion String.valueOf() in Strings Konvertieren Sie grundlegende Datentypen mit der Java-Funktion String.valueOf() in Strings Jul 24, 2023 pm 07:55 PM

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 einen String mit der Java-Funktion Boolean.valueOf() in einen Booleschen Wert Konvertieren Sie einen String mit der Java-Funktion Boolean.valueOf() in einen Booleschen Wert Jul 24, 2023 pm 05:15 PM

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

Verwendung und Beispiele der valueOf-Methode in Java Verwendung und Beispiele der valueOf-Methode in Java Apr 24, 2023 pm 02:13 PM

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 StringBuffer mit der toString()-Methode der StringBuffer-Klasse in einen String Konvertieren Sie StringBuffer mit der toString()-Methode der StringBuffer-Klasse in einen String Jul 25, 2023 pm 06:45 PM

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 mit der Java-Funktion String.valueOf() in einen String Konvertieren Sie ein Zeichenarray mit der Java-Funktion String.valueOf() in einen String Jul 27, 2023 am 11:22 AM

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

Konvertieren Sie andere Typen mit der Java-Funktion String.valueOf() in einen String Konvertieren Sie andere Typen mit der Java-Funktion String.valueOf() in einen String Jul 24, 2023 pm 10:31 PM

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

So passen Sie die toString()-Methode in Java an So passen Sie die toString()-Methode in Java an Apr 27, 2023 pm 02:25 PM

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

Wie drucke ich ein Array mit der toString()-Methode in Java? Wie drucke ich ein Array mit der toString()-Methode in Java? May 09, 2023 am 10:01 AM

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

See all articles