【JavaScript笔记 · 基础篇(四)】Object全家桶(引用数据类型中的对象 / Object对象 / Object.prototype)

一. 引用数据类型中的对象

1.1 概述

对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

var obj = {
   
   

    name:"zevin",
    
    "age":21,
    
    7:{
   
   lost:shanxi,city:yuncheng},
    
    get:funciton(a){
   
   
        return true; 
    }
};

上述代码中,大括号就定义了一个对象(对象是以{ }作为边界),它被赋值给变量obj,所以变量obj中保存的引用地址就指向了一个对象。该对象中包含了四个键值对:

  1. name,“age”,7,get被称为键名:
    js规定对象的所有键名都是字符串(ES6 又引入了 Symbol 值也可以作为键名),所以加不加引号都可以。数字也可以是键名,会被自动转换成字符串。

  2. “zevin”,21,{lost:shanxi,city:yuncheng},匿名函数被称为键值:
    键值几乎可以是任何类型:字符串,数字,对象,匿名函数等等。

键与值通过“:”隔开,键值对之间通过“,”隔开,最后一个键值对(get)后面的逗号可有可无。

1.2 初始化

1.2.1 字面量
var obj = {
   
    };
1.2.2 构造函数模式

使用Object系统内置的对象构造函数,也可以使用自定义构造函数。obj是对象,也被称为实例。Object是类,也被称为构造函数,构造函数是创建对象的模板。

var obj = new Object();

1.3 属性访问

var obj = {
   
   
    name:"zevin",
    1107:21,
    gender:"male"
};
1.3.1 点访问

(对象 . 属性名)。数字键名不能使用点访问,必须采用中括号访问。

obj.name  // "zevin"
obj.1107  // 报错
1.3.2 中括号访问

如果中括号里直接放键名,那么键名必须放在引号里面,否则会被当作变量处理。当然也可以用变量代理。
数字键名只能使用中括号访问,而且可以不加引号。

obj["name"]  // "zevin"
var man = "gender";
obj[man]  //  male  等价于: obj["gender"]  等价于: obj.gender
obj[1107]  // 21

1.4 属性的赋值

点运算符和方括号运算符,不仅可以用来读取值,还可以用来赋值。

var obj = {
   
   };

obj.name = "zevin";
obj[1107] = 21;

JS允许随时新增属性,不一定要在定义对象的时候,就定义好属性。(在java对象中,定义对象时就确定了属性不可更改)。
这是正常的默认赋值,后续还可以通过Object.defineProperty()方法添加自定义属性的方式来满足我们更复杂的需求(比如属性不可写)。传送门👇:

【JavaScript笔记(五)】为对象添加自定义属性 —— Object.defineProperty()方法详细解读

1.5 属性的查看

1.5.1 Object.keys

查看一个对象本身的所有属性,可以使用Object.keys方法。会返回一个数组包含该对象所有可遍历的属性键名。

var obj = {
   
   
    name:"zevin",
    1107:21,
    gender:"male"
};
Object.keys(obj);  // ['name','1107','gender']
1.5.2 in 运算符

in 运算符用来检查对象是否包含某个属性,无论是自身定义的,还是继承的,只要包含都会返回true;否则返回false。

var obj = {
   
   
    name:"zevin",
    1107:21,
    gender:"male"
};

"name" in obj;  // true
"age" in obj;  // false
"toString" in obj;  // true

1.6 属性的遍历(for-in)

依次从obj中获取属性名赋值给key,通过obj[key]访问属性值。

for(var key in obj){
   
   
    console.log(key,obj[key]);
};

for-in循环还有两点需要注意:

  • for-in循环只会遍历输出可遍历(enumerable = true)的属性;
  • 它不仅遍历对象自身的属性,还遍历继承的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值