JS学习 01.数据类型

JavaScript原始类型

有五种:undefined,null boolean string number object(对象类型)

包装对象

  1. 如果引用了字符串的属性,ja就会将字符串值通过调用new String()方式转换成对象,这个对象继承字符串方法,被用来处理属性的引用,属性引用结束,那么新创建的对象也会被销毁
  2. 所以总结一下,存取字符串,数字,布尔值的属性创建的临时对象叫做包装对象,因为字符串,数字,布尔值的属性都是只读的,不能给其新属性,这是与对象的区别
  3. 当使用String()显式创建包装对象时, 在==中他们相等,在===中不相等 `,使用typeof可知创建的包装对象是Object类型
var s = "hello world";
var S = new String(s);
console.log(typeof s);//string
console.log(typeof S);object
console.log(s === S);false

不可变的原始值和可变的对象

  1. 原始值的属性是不可变的,字符串的方法看似改变了字符串,其实是返回了一个新的字符串
  2. 原始值的比较是值的比较,当他们值相等的时候才算相等
  3. 对象和数组的属性是可变的
  4. 对象的比较并非值得比较,我们把对象称作引用类型(reference type),所以对象的比较均是引用的比较,当他们引用同一个基对象时候才相等
  5. 当我们想比较两个弹幕的对象或者数组的,必须比较他们的属性或元素
function equalArrays(a,b){
    if(a.length !== b.length)
        return false;
    for(var i = 0;i<a.length;i++)
        if(a[i]!==b[i]) 
        return false;
        return true;
}

类型转换

  1. 原始值到对象的转换非常简单,通过调用String(),Number()等方法直接创建新的包装对象即可
  2. 布尔值中为false的有 null undefined “”(空字符串) 0 -0 NaN
  3. 对象转换成原始值
    • 对象具备toString()方法,调用这个方法,如果返回原始值,将其转为字符串,如果不是原始值,则调用valueOf方法
    • 对象没有toString方法,或者方法不返回一个原始值,则调用valueOf()方法,返回原始值,js将这个值转为字符串,返回这个字符串
    • 否则,抛出类型错误异常

补充说明下toString和valueOf方法链接

显示转换

  1. 调用String(),Number()等方法直接创建新的包装对象即可
  2. 除了null和undefined意外,任何值都有toString方法,执行结果和String()方法返回结果一致
  3. 如果想把null undefined转换成对象,会抛出TypeError的错误,但是Object()方法不会,只会返回一个新创建的空对象

隐式转换

  1. ==号会进行隐式转换
    • 类型不同的转换:object == number|string尝试对象转为基本类型
  2. 严格等于===,会先判断两边的类型
    • 一般来说new object === new object返回false
  3. 如果+运算符的一个操作符是字符串,会把另外一个操作数转换为字符串 x+""等价String(x)
  4. 一元+运算符将操作数转化为数字+x等价于Number(x)
  5. 一元!会把操作数转换为布尔值并取反

类型检测

  1. typeof(用于基本类型) 遇到null失效,可以使用严格===判断null
    但是对数组
  2. 用instanceof(判断数组和对象)
    1. 查询原型链中是否含有右边的类型
    2. 在不同的window或者iframe之间,不能使用instanceof。
  3. 使用Object.prototype.toString也可以判断
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值