在 JavaScript 中有七种基本的数据类型,分别是Number、String、Bool、Symbol、Undefined、Null、Object。前六种称为原始类型,因为它们的值只包含一种东西(字符串,数字或者其他)。相反,对象则用来存储键值对和更复杂的实体。本文将介绍的是Object的基本用法。
创建对象
创建Object实例的方式有两种,一种是使用new操作符后跟Object构造函数。
let user = new Object(); //“构造函数”的语法
另一种是对象字面量表示法,使用花括号 {…} 来创建对象。一个属性就是一个键值对(“key: value”),其中键(key)是一个字符串(也叫做属性名),值(value)可以是任何值。
let user = {
key:value,
key2:value
}
删除对象的属性
我们可以用delete操作符移除属性
delete object.property 或 delete object['property']
查看对象的属性
每个对象除了自身的属性以外都有隐藏属性['_proto_'],其存储的是另一个对象的引用。该对象称为“原型”。原型里存着对象的共有属性。
要查看一个对象的自身所有属性,可以使用
Object.keys(obj)
要查看除了自身属性外的共有属性,可以使用
console.dir(obj)
要判断一个属性是自身的还是共有的,可以使用
object.hasOwnProperty('toString')
要查看属性值可以使用
obj['key']或者obj.key
Tips:
-
obj[key]//会把变量key的值转换为字符串 -
'name' in obj和obj.hasOwnProperty('name')的区别
如果name属性在obj的对象或其原型链中,则'name' in obj返回true。
如果obj对象自身属性中是否具有name属性,则obj.hasOwnProperty('name') 返回true。
修改或增加对象的属性
要修改或增加对象的属性,可以对对象进行赋值,若进行操作的属性是该对象已有属性则对原属性进行修改,没有则增加属性。
示例:
let obj = {name: 'Jack'};
obj.name = 'Amy';
obj['name'] = 'Amy'
若有多个属性需要进行修改或增加,可使用ES6新增方法
Object.assign(obj,{age:18,gender:'man'})
修改隐藏属性
要修改原型,可以直接修改对象的_proto_
let obj = {name:'Jack'}
let obj2 = {name:'Amy'}
let common = {kind:'human'}
obj._proto_ = common
obj2._proto_ = common
如此一来,对象obj,obj2的隐藏属性_proto_存储的都是common对象的引用。 但是不推荐使用此方法进行修改,ES6规范的写法是
let obj = Object.create(common)
obj.name = 'Jack'
let obj2 = Object.create(common)
obj2.name = 'Amy'
在创建对象的时候就把_proto_属性存储为common对象的引用,创建对象之后再去修改隐藏属性,会非常影响性能。