11.1 属性名引号
-
属性名的引号最好不要省略, 如果省略有两个问题:
-
命名规范需要遵循标识符的命名规范
>var obj = {2g:"344"} //VM500:1 Uncaught SyntaxError: Invalid or unexpected token >var obj = {2:"344"} //这个是可行 -
科学记数法会自动转换
var obj = {1e3:"45"} //obj {1000: "45"} var obj = {.234:"45"} //obj {0.234: "45"} var obj = {0xFF:"45"} //obj {255: "45"}
-
-
属性名不管有没有引号, 但是一定会转化成字符串, 空字符
''都可以 -
想用变量做属性名的话用:
[]:var obj={[name]:"45"} // {galen: "45"}
11.2 读属性三种办法
共用三种办法obj.name obj['name'] obj[name], 前面两个的name是字符串, 而第三个是变量.
11.3 删除属性名key, 和删除属性值
- delete:删除属性名和值,
- 设置undefined值,可删除属性值
- 可重复删除,不报错
- 删除后可以用
'name' in obj, 判断是否删除成功
11.4 原型
原型是什么
原型就是共有属性.每个对象都有一个隐藏属性__proto__: 这个隐藏属性存着原型的地址#409, 而#409对象的原型地址为空,
如何查看自己的隐藏属性
console.dir(obj), 自身属性和公有的属性
可以修改原型吗?
可以随时修改原型的属性, 很脆弱
obj.tostring是无法修改原型的obj.__proto__.tostring: 可以强行修改, 但是很危险
可以创建的时候指定原型吗?
创建指定原型: var obj= Object.create(common), common就是原型对象
可以批量修改属性值吗?
批量赋值: Object.assign(obj, {'name': galen, "haha": jakg})
- delete:删除属性名和值,
- 设置undefined值,可删除属性值
- 可重复删除,不报错
- 删除后可以用
'name' in obj, 判断是否删除成功
11.4 原型
原型是什么
原型就是共有属性.每个对象都有一个隐藏属性__proto__: 这个隐藏属性存着原型的地址#409, 而#409对象的原型地址为空,
如何查看自己的隐藏属性
console.dir(obj), 自身属性和公有的属性
可以修改原型吗?
可以随时修改原型的属性, 很脆弱
obj.tostring是无法修改原型的obj.__proto__.tostring: 可以强行修改, 但是很危险
可以创建的时候指定原型吗?
创建指定原型: var obj= Object.create(common), common就是原型对象
可以批量修改属性值吗?
批量赋值: Object.assign(obj, {'name': galen, "haha": jakg})