|
导读网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立... 网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。超级文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。 本篇文章给大家带来的内容是关于js中对象转化成字符串、数字和布尔值方法介绍(示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一、对象转化成字符串:规则: 1、如果对象有toString方法,则调用该方法,并返回相应的结果;(代码通常会执行到这,因为在所有对象中都有toString方法) 2、如果对象有valueOf方法,则调用该方法,并返回相应的结果; 3、否则抛出异常。 通常,所有对象都有toString方法,且内置对象都有自己toString方法的实现 alert( {key: 'value'} ) // [object Object] 在界面输出中, 比如 alert() 和 document.write() ,将优先调用 toString,如果过得不到 标量 或 undefined、null ,再尝试 valueOf ,如果仍然返回对象则报错。 可以自定义toString() var obj = {
age:23,
toString:function(){
return this.age;
}
}
obj.toString();//23二、对象转化成数字需要转化成数字的两种主要情况: 函数里边的参数需要是数字,如: Math.sin(obj) / isNaN(obj) 以及算术运算符: +obj ; 用于比较,如:obj == 'John' PS:下面两种比较不会发生类型转换, a)在严格比较(===)中,不会发生任何的类型转换, b)在非严格比较中,如果参数都是对象,不会发生类型转换,通常,如果两个对象引用统一对象,则返回true. 转化成数字的规则: 1、如果对象有valueOf方法,则调用该方法,并返回相应的结果; 2、当调用valueOf返回的依然不是数字,则会调用对象的toString方法,并返回相应的结果; 3、否则抛出异常。 对象的valueOf方法返回的是对象本身,而不是字符串(比如数组、函数,它们的valueOf方法是从Object.prototype上继承下来的,默认行为是返回对象本身),所以才会采用toString 对于对象型参与 算术运算和 "==" 运算, 不等于比较元算(> 、<、>=、<=),自动发生数据类型转换,先调用 valueOf ,如果 valueOf 不能返回标量(number、string、boolean) 和 undefined、 null , 将继续调用 toString, 如果仍然返回对象型数据,报错。 Date 类型的例外: 在 + 和 == 运算中,优先 toString ,这应该是规范对该数据类型的特殊对待。 补充:调用valueOf()的结果:
可以重写对象的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。 相关推荐: 以上就是js中对象转化成字符串、数字和布尔值方法介绍(示例)的详细内容,更多请关注php中文网其它相关文章! 网站建设是一个广义的术语,涵盖了许多不同的技能和学科中所使用的生产和维护的网站。 |
温馨提示:喜欢本站的话,请收藏一下本站!