JavaScript 中的对象

129 阅读2分钟

1. 声明对象的两种语法

一、字面量声明
var obj = {
        属性名1 : 属性值,
        属性名2 : 属性值,
        方法名1 : function() {
            .....
        }
    }
通过obj.属性名或obj.方法名()就可以读取或调用对象的属性/方法了。

二、用new操作符构造Object对象
var obj = new Object();
obj.属性名1 = 属性值1;
obj.属性名2 = 属性值2;
obj.方法名1 = function() {
    ....
};
....
首先用new Object()创建一个空对象,然后用多条语句给对象添加属性/方法。

2.如何删除对象的属性

删除属性

Delete运算符只能删除自有属性,不能删除继承属性。要删除继承属性必须从定义这个属性的原型对象上删除,而且这会影响到所有继承自这个原型的对象。 Delete运算符用来删除对象属性,如果删除成功或所删除的项目不存在,delete将返回 true

56A5A797-E909-42F6-8D6E-4ED79D979BAF.png (4)注意,并不是所有的属性都可以删除,一些内置核心和客户端属性是不能删除的,通过var语句声明的变量不能删除,通过function语句定义的函数也是不能删除的

3.如何查看对象的属性

首先先创建一个对象

let obj = {
    'name': '余小鱼',
    'age':23,
    eat:function (){
        console.log('会吃饭');
    }
}

下面展示了obj的数据结构 FE16B5C2-2926-42FA-8B65-81D0CB0C7714.png

Object.keys/values/entries

这三个方法都是用来获取对象上的属性集合的。 Object.keys 是用来获取属性名集合, Object.values 是用来获取属性值集合, Object.entries 则是用来获取属性键-值对集合的。

Object.keys(obj)   //['name', 'age', 'eat']
Object.values(obj) //['余小鱼', 23, ƒ]
Object.entries(obj)//[[Array(2), Array(2), Array(2)] ['name', '余小鱼'] ['age', 23] ['eat', ƒ]]

4.如何修改或增加对象的属性

修改

  • 改自身 obj['name'] = 'jack'
  • 批量改自身 Object.assign(obj, {age:18, ...})
  • 改共有属性 obj.proto[‘toString'] = 'xxx'
  • 改共有属性 Object.prototype['toString'] = 'xxx'
  • 改原型 obj.proto = common
  • 改原型 let obj = Object.create(common)
  • 注:所有 proto 代码都是强烈不推荐写的

增加

基本同上:已有属性则改;没有属性则增.

5.’name’ in obj 和 obj.hasOwnProperty(‘name’)的区别

in操作符只要通过对象能访问到属性就返回true。 hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)

鄙人学习总结,如有发现错误麻烦指正.