对象可计算属性
对于对象属性的访问有两种方式,一种是通过点号访问,另一种是通过键值访问方式,其两者的区别就是通过键值访问的方式,其属性名可以不遵守变量的命名规则,只要是UTF-8/Unicode编码就行,例如:
|
|
在ES5之前,涉及到对象的属性是通过字符串计算的形式得到的,必须采用构造形式去创建,而不能通过字面的形式去创建,例如:
|
|
ES6之后,增加了可计算属性,直接可以通过字面量的形式定义可计算属性。具体使用方法如下:
|
|
出现这个用法最主要的作用是为了可以用过字面量的方式定义Symbol计算类型的属性。例如:
|
|
值为函数的属性
其实就是一点,一个方法是用于不会属于一个对象的,仅仅可以引用,不论是通过什么方式实现的。明确这一点就完全可以了。虽然在某些调用方式下,this
会绑定到该调用对象上,但也改变不了上述的事实。
数组其实一个特殊的对象
首先举一个例子,我发现好多工作好多年的开发者都没有正确回答这个问题:
|
|
数组这个对象会对传入的属性名往数值类型上转,如果可以成功转换成数字类型,那么就当做正常的数字类型处理,如果不能转化成数字类型,那么就会被当做数组的一个属性,这时是不会对length
有影响的,所以上面的输出,第一个应该是3
,第二个也是3
。
输出如下:
VM336:2 3
VM336:4 3
undefined
array
Array[3]0: 11: 22: 33m: 4length: 3__proto__: Array[0]