Maison > Article > interface Web > Introduction aux méthodes de conversion d'objets en chaînes, nombres et valeurs booléennes en js (exemple)
Le contenu de cet article concerne l'introduction (exemples) de la conversion d'objets en chaînes, nombres et valeurs booléennes en js. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. pour vous.
Règles :
1 Si l'objet a une méthode toString, appelez la méthode et retournez le résultat correspondant ; le code est généralement Il sera exécuté jusqu'à ce point, car il y a une méthode toString dans tous les objets)
2 Si l'objet a une méthode valueOf, appelez la méthode et renvoyez le résultat correspondant ; 🎜>3. Sinon, une exception s'est produite.
Habituellement, tous les objets ont une méthode toString et les objets intégrés ont leur propre implémentation de la méthode toString
alert( {key: 'value'} ) // [object Object]
alert( [1,2] ) // "1,2"alert( new Date() ) // "Sam 15 septembre 2018 15:58:01 GMT+0800 (heure standard de Chine)"
Dans la sortie de l'interface, telle que alert() et document.write(), toString sera appelé en premier Si un scalaire ou un défini ou null ne peut pas être obtenu, valueOf sera réessayé si l'objet est toujours renvoyé. , une erreur sera signalée.
Vous pouvez personnaliser toString()
var obj = { age:23, toString:function(){ return this.age; } } obj.toString();//23
b) En comparaison non stricte, si les paramètres sont tous deux des objets, aucune conversion de type ne se produira. Habituellement, si deux objets font référence au même objet, true sera renvoyé. Règles de conversion. en nombres : 1. Si l'objet a une méthode valueOf, appelez la méthode et retournez le résultat correspondant 2. Lorsque valueOf est appelé et que la valeur renvoyée n'est toujours pas un nombre, la méthode toString de l'objet sera appelée et le résultat correspondant sera renvoyé 3. Sinon une exception sera levée ; La méthode valueOf d'un objet renvoie l'objet lui-même, pas une chaîne (comme les tableaux et les fonctions, leur méthode valueOf est héritée de Object.prototype, et le comportement par défaut est de renvoyer l'objet lui-même), donc Utilisera toString pour la participation de type d'objet Les opérations arithmétiques et les opérations "==" ne sont pas égales aux opérations de comparaison (>, 95ec6993dc754240360e28e0de8de30a=, <=). La conversion du type de données se produit automatiquement en premier. , si valueOf ne peut pas renvoyer un scalaire (nombre, chaîne, booléen) et undefined, null, continuera à appeler toString S'il renvoie toujours des données de type objet, une erreur sera signalée.
可以重写对象的valueOf()方法(百度一道面试题,定义一个对象,使obj == '1' ,结果为true):
var obj = { valueOf: function(){ return 1; } }; console.log(obj == '1');//true
对象在JS中总是返回true
根据上述,对象在相等性判断中如何转变?
在布尔上下文中, a是true , b是false,a == b,这是可能的 。
[] == ![] //true
内部的转化步骤:
1、右边是![],将会被转换成一个布尔值,[]为true,取非为false,此时表达式变成:
[]==false;
2、按照规则,右边是布尔值,将false转换成0,左边是数组,数组也将进行数字转换,先调用valueOf(),不能转化成原始值,再用toString(),转换为0
0 == 0
3、结果为true
补充 == 和!=判断规则(注意: ===!== 和 对象==对象 这三种情况不会进行类型转换):
如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值----false转化为0,true转化为1;
如果有一个数是字符串,另一个操作数是数值,将字符串转化成数值;
如果一个操作数是对象,另一个操作数不是对象,将对象转化为基本操作类型(先valueOf()再toString(),均不能得到基本类型的值则会报错),再比较。
所以,对象在相等性判断中:
若两边都是对象,不会进行类型转换,为同一个引用才会返回true
若只有一边为对象,则会先调用对象的valueOf()方法,不能返回基本类型,再调用对象的toString()方法,还是不能就会报错,否则用转化后的基本类型值继续进行判断
举例,感受下~:[]==[]//false []==false//true !![]//true []==![]//true
在JavaScript中,对象有三个转换,这取决于具体情况:
字符串输出,使用toString 。
数字:数学函数,操作符,使用valueOf 后使用 toString 。
布尔值:转化为true。
相关推荐:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!