-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
js中的数据类型和数据类型转换 #128
Comments
toString表示一个代表该对象的字符串 每个对象都有一个toString方法,当该对象被期望是一个字符串时,就会被自动调用。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",其中type是对象的类型。 举例子说明一下
覆盖默认的toString方法可以自定义一个方法来取代默认的toString() 方法。该toString()方法不能传入参数,并且必须返回一个字符串。自定义的toString方法返回的可以是任何我们需要的值。如果这个值是和对象有关系的相关信息,那么它将变得非常有用。 以下的例子我们创建了一个Dog对象类型,并创建一个theDog实例
当我们调用theDog的toSting方法时,返回的是
下面我们覆盖掉默认的toString方法。返回和其对象本身有关的信息
我们再次调用toString的时候,返回的值和对象本身就有了关系。看下面这个例子
判断数据类型可以通过toString() 来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用,传递要检查的对象作为第一个参数,称为thisArg。
|
valueOf返回指定对象的原始值 JavaScript调用valueOf方法将对象转换为原始数据类型(primitive)。你很少需要自己调用valueOf方法; 当遇到需要预期的原始数据类型(primitive)的时候,JavaScript会自动调用它。 默认情况下。valueOf方法由Object后边的每个对象继承。每个内置的核心对象都会覆盖此方法以返回适当的值。如果对象没有原始数据类型(primitive)。则valueOf将返回对象本身。 JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要。因此,不同类型对象的valueOf()方法的返回值和返回值类型均可能不同。 不同类型对象的valueOf的返回值
你可以在自己的代码中使用valueOf将内置对象转换为原始数据类型(primitive)。 创建自定义对象时,可以覆盖Object.prototype.valueOf()来调用自定义方法,而不是默认Object方法。Immutable.js就充分的利用了这一特征 覆盖自定义对象的valueOf方法你可以创建一个取代valueOf方法的函数。你的方法不能传入任何参数。下面是一个实际例子
|
js中的数据类型
原始类型 string number boolean null undefined symbol
对象 Object
显式类型转换
显示类型转换是通过调用下面这三个函数来进行的。
1. Number( )
数值: 转换之后还是数值
字符串: 如果可以被解析为数值,则转为数值,否则转为NaN,空字符串转为0
布尔值: true转成1, false转为0
undefined: 转成NaN
null : 转成0
对象: 这个稍微复杂一些,具体的过程如下
https://codepen.io/zhaojianxin/pen/RyYwwe?editors=0012
2. String( )
数值: 转换成对应的字符串
字符串: 还是自身
布尔值 : true转为‘true’ ,false转为‘false’
undefined: 转为“undefined”
null : 转为 ‘null’
对象:这个过程一样是有点复杂,具体的过程如下
https://codepen.io/zhaojianxin/pen/ZoMWrY?editors=0011
3. Boolean()
除undefined,null,0,NaN,空字符串之外,全部返回true。
隐式类型转换
隐式类型转换的场景大概有如下几种
下面我们一一分析
四则运算
四则运算中,除了加法特殊,减乘除都比较简单。即都会试着转换为number
加法运算需要记住两条规则
http://javascript.info/object-toprimitive
The text was updated successfully, but these errors were encountered: