[乐意黎转载]关于JS 命名和数组的一些记录
来源:互联网 发布:浙江丝绸行业贸易数据 编辑:程序博客网 时间:2024/06/04 18:12
对象可计算属性
对于对象属性的访问有两种方式,一种是通过点号访问,另一种是通过键值访问方式,其两者的区别就是通过键值访问的方式,其属性名可以不遵守变量的命名规则,只要是UTF-8/Unicode编码就行,例如:
12345
var object = {'first-name': 'MrErHu'};console.log(object['first-name']);//MrErHuconsole.log(object.first-name); //ReferenceError
在ES5之前,涉及到对象的属性是通过字符串计算的形式得到的,必须采用构造形式去创建,而不能通过字面的形式去创建,例如:
123
var obj = new Object();var prefix = 'first-';obj[prefix+'name'] = 'MrErHu';
ES6之后,增加了可计算属性,直接可以通过字面量的形式定义可计算属性。具体使用方法如下:
1234
var prefix = 'first-';var obj = {[prefix+'name'] : 'MrErHu'};
出现这个用法最主要的作用是为了可以用过字面量的方式定义Symbol计算类型的属性。例如:
123
var obj = {[Symbol.something] : 'Hello World'};
值为函数的属性
其实就是一点,一个方法是用于不会属于一个对象的,仅仅可以引用,不论是通过什么方式实现的。明确这一点就完全可以了。虽然在某些调用方式下,this
会绑定到该调用对象上,但也改变不了上述的事实。
数组其实一个特殊的对象
首先举一个例子,我发现好多工作好多年的开发者都没有正确回答这个问题:
1234
var array = [1,2,3];console.log(array.length);array['3m'] = 4;console.log(array.length);
数组这个对象会对传入的属性名往数值类型上转,如果可以成功转换成数字类型,那么就当做正常的数字类型处理,如果不能转化成数字类型,那么就会被当做数组的一个属性,这时是不会对length
有影响的,所以上面的输出,第一个应该是3
,第二个也是3
。
输出如下:
VM336:2 3
VM336:4 3
undefined
array
Array[3]0: 11: 22: 33m: 4length: 3__proto__: Array[0]
0 0
- [乐意黎转载]关于JS 命名和数组的一些记录
- [乐意黎转载]JS中push()和pop()以及unshift()和shift()的用法小结
- [乐意黎转载]GitHub上整理的一些工具集合
- [乐意黎转载]PHP里->和双冒号的区别
- [乐意黎原创]JS中null和undefined的区别
- [乐意黎转载]mysql删除记录时如何让自动递增的字段重新排序
- [乐意黎转载]高效 jquery 的奥秘
- [乐意黎转载]图片的DataURL技术
- [乐意黎转载]PhantomJS
- JS关于字符串和数组的一些使用方法
- [乐意黎转载]PHP 二维数组根据某个字段排序
- [乐意黎转载]昆明市残疾人联会关于征收2016年残疾人就业保障金的通告
- 关于D3.js的一些误区[转载]
- [乐意黎转载]《一起学 Node.js》彻底重写完毕
- 关于js数组的一些机试题
- js-关于数组的一些事
- [乐意黎转载]git 常用命令
- [乐意黎转载]计算机英语词汇
- var exitFn: Int => Unit = (exitCode: Int) => System.exit(exitCode)解析
- 【小白入门】jmeter代理服务器录制
- Ubuntu16.04安装wireshark
- Linux系统中的load average
- 关于sublimeText安装Emmet遇到的问题
- [乐意黎转载]关于JS 命名和数组的一些记录
- mybatis 批量插入
- MyEclipse2014破解
- vue-router路由
- IOS属性的作用
- Android客制化开关 defaults.xml注释
- 长整数四则运算_双向循环链表
- iOS经典讲解之UITableView 去掉底部多余的行和分割线
- Sublime Text 3 简体中文汉化