JavaScript对象基本用法

124 阅读2分钟

在 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:

  1. obj[key] //会把变量key的值转换为字符串

  2. 'name' in objobj.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对象的引用,创建对象之后再去修改隐藏属性,会非常影响性能。