js对象小结

对象是javascript的技术·,一共有六种主要类型

string,number,boolean,null,undefined,object

注意,简单基本类型(string,boolean,number,null和undefined)本身不是对象。null有时会被当作一种对象类型,但是这其实只是语言本身的一个bug,即对null执行typeof null时会返回字符串“object”,实际上,null本身是基本类型。(原理是这样的,不同的对象在底层都表示为二进制,在javascript中二进制前三位都为0的话会被判断为object类型,null的二进制表示是全0,自然前三位也是0,所以执行typeof时会返回“object”)

有一种常见的说法错误是“javascript中万物皆是对象”,这显然是错误的。

实际上,javascript中有许多特殊的对象子类型,我们可以称之为复杂基本类型。

如下图所示
这里写图片描述

有两种创建字符串的方法,字面量法和构造函数法,为什么字符串能拿到长度之类的呢,是因为必要时语言会自动把字符串字面量转化成一个String对象,然后取到它的值,我以为通过这个过程就直接转化成了object,但是取过了之后发现还是不变的还是string

null和undefined没有对应的构造形式,它们只有文字形式。相反,Date只有构造,没有文字形式。

对于Object,Array,Function,RegExp(正则表达式)来说,无论使用文字形式还是构造形式,它们都是对象,不是字面量。在某些情况下,相比用文字形式创建对象,构造形式可以提供一些额外选项。由于这两种形式都可以创建对象,所以我们首选更简单的文字形式。

对象中,属性名永远是字符串,数组下标是数字,但是在对象属性名中数字会被转换成字符串。

对象的深拷贝:

var newObj = JSON.parse(JSON.stringify(someobj));

遍历:(for…in和for…of)

推荐在循环对象属性的时候,使用for…in,在遍历数组的时候的时候使用for…of。

for…in循环出的是key,for…of循环出的是value

注意,for…of是ES6新引入的特性。修复了ES5引入的for…in的不足

for…of不能循环普通的对象(对象没有iterator),需要通过和Object.keys()搭配使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值