js对象和Object关系

JavaScript对象和Object关系

W3C上有说JavaScript中所有事物都是对象:数字、字符串、数组、函数等等…我感觉从某种意义上是对的,但也有例外,首先js对象就是一种具有属性和方法的特殊数据类型,而Object是js中原型链的起点,js中的对象都继承了他,有一个方法可以验证就是使用instanceof方法,instanceof的作用是检测一个构造函数的prototype是否在一个对象的原型链上,比如说;

const arr = [ 1, 2 ]
arr instanceof Object // true,检测Object构造函数的prototype是否在arr对象的原型链上

刚才我有说的例外,就是像字符串这种基本数据类型字面量声明方式,我们都知道字符串有两种声明方式,字面量:

const str1 = '123'

和构造函数方式:

const str2 = new String( '123' )

这样的话str1就不是一个对象,没有属性和方法,str2是一个对象,这样说可能会产生误解,因为我们知道str1也是可以访问属性的:

str1.length // 3

这是怎么回事呢?这里其实是通过String构造函数生成了一个临时的对象:

var _str = new String( str )
_str.length // 3,然后再把_str对象给销毁掉

比如说我们这样测试下:

var str = '123'
str.a = 1 // 这里会利用String构造函数产生一个临时对象
str.a // undefined,这里又是产生的另外一个临时对象,所以属性a为undefined
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值