JS 对象基本用法
- 声明对象的两种语法
- let obj = { 'name': 'frank', 'age': 18
- let obj = new Object({'name': 'frank','age': 18})
- 如何删除对象的属性
- 不含属性名 'xxx' in obj === false
- 含有属性名,但是值为 undefined 'xxx' in obj && obj.xxx === undefined 注意 obj.xxx === undefined 不能断定 'xxx' 是否为 obj 的属性
- 如何查看对象的属性
- 查看自身所有属性: Object.keys(obj)
- 查看自身+共有属性: console.dir(obj)
- 或者自己依次用 Object.keys 打印出 obj.__proto__
- 判断一个属性是自身的还是共有的: obj.hasOwnProperty('toString')
- 中括号语法:obj['key']
- 点语法:obj.key
- 坑新人语法:obj[key] // 变量 key 值一般不为 'key'
- 如何修改或增加对象的属性
- 改自身:obj['name']='jack'
- 批量改自身:Object.assign(obj,{age:18,gender: 'man'})
- 改共有属性:obj.__proto['toString']='xxx'
- 改共有属性:Object.prototype['toString']='xxx'
- 改原型:obj.__proto_=common
- 改原型:let obj=Object.cerate(common) 增
- 基本同上,已有属性则改;没有属性则增
- 'name' in obj和obj.hasOwnProperty('name') 的区别
delete obj.xxx 或 delete obj['xxx']即可删除 obj 的 xxx 属性
请区分「属性值为 undefined」和「不含属性名」
查看属性
-
查
function Person (){
}
Person.prototype.name = "原型的名字";
var p1 = new Person();
//使用in判断对象中是否由属性时,若自身没有,在原型中找到也是返回true
console.log("name" in p1);
//使用hasOwnProperty()判断对象是否含有属性时,只有自身有才后悔返回true
console.log(p1.hasOwnProperty("name"));