JavaScript语法引用数据类型之Object(对象)

一、对象的基本介绍

1、定义

JavaScript 对象是拥有属性和方法的数据

  • 面向对象编程中最重要的就是对象,万物皆对象
  • 代表现实中的某个事物, 是该事物在编程中的抽象
  • 多个数据的集合体(封装体)
  • 用于保存多个数据的容器

2、为什么使用对象?

  • 集中管理多个数据
  • 便于对多个数据进行统一管理

3、对象的组成:

对象是由属性和方法组成的。

属性:

  • 代表现实事物的状态数据
  • 由属性名和属性值组成
  • 属性名都是字符串类型, 属性值是任意类型
  • Obj.a = "abc" // a为obj的属性

方法

  • 代表现实事物的行为数据
  • 是特别的属性==>属性值是函数
  • obj.fun = function(){} fun() // fun为obj的属性,可以调用

4、访问对象内部数据

  • 属性名: 编码简单, 但有时不能用
    obj.name = "孙悟空";
  • [‘属性名’]: 编码麻烦, 但通用
obj["123"] = 789;
  • 当对象的属性中有连接符或者是不确定的情况使用[‘属性名’]

5、内置对象

JS中有如下三个常用的内置对象:

  • Object
  • Function
  • Array

二、对象创建:

创建Object实例有如下两种方式:

1、构造函数

使用 new 操作符后跟 Object 构造函数,如下所示:

var person = new Object();
person.name = "Nicholas";
person.age = 29;

2、对象字面量(语法糖)

对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。
使用对象字面量,可以在创建对象时,直接指定对象中的属性

     语法:{属性名:属性值,属性名:属性值....}

对象字面量的属性名可以加引号也可以不加,建议不加,如果要使用一些特殊的名字,则必须加引号。

<script type="text/javascript">
            /*
             * 使用对象字面量,可以在创建对象时,直接指定对象中的属性
             * 语法:{属性名:属性值,属性名:属性值....}
             *  对象字面量的属性名可以加引号也可以不加,建议不加,
             *  如果要使用一些特殊的名字,则必须加引号
             * 
             * 属性名和属性值是一组一组的名值对结构,
             *  名和值之间使用:连接,多个名值对之间使用,隔开
             *  如果一个属性之后没有其他的属性了,就不要写,
             */
            var obj = {
                name:"猪八戒",
                age:13,
                gender:"男",
                test:{name:"沙僧"}
            };

            console.log(obj.test);

        </script>

三、对象的属性增删改查

1、对象增删改查实例:

    <script type="text/javascript">
            /*
             *  使用new关键字调用的函数,是构造函数constructor
             *  构造函数是专门用来创建对象的函数
             *  使用typeof检查一个对象时,会返回object
             */
            var obj = new Object();

            /*
             * 在对象中保存的值称为属性
             * 向对象添加属性
             *  语法:对象.属性名 = 属性值;
             */
            //向obj中添加一个name属性
            obj.name = "孙悟空";
            //向obj中添加一个gender属性
            obj.gender = "男";
            //向obj中添加一个age属性
            obj.age = 18;

            /*
             * 读取对象中的属性
             *  语法:对象.属性名
             *  如果读取对象中没有的属性,不会报错而是会返回undefined
             */

            console.log(obj.gender);
            console.log(obj.hello);

            /*
             * 修改对象的属性值
             *  语法:对象.属性名 = 新值
             */
            obj.name = "tom";

            /*
             * 删除对象的属性
             *  语法:delete 对象.属性名
             */
            delete obj.name;
            console.log(obj.age);
        </script>

2、注意事项

  • 如果读取对象中没有的属性,不会报错而是会返回undefined。
  • 对象的属性名不强制要求遵守标识符的规范。
  • JS对象的属性值,可以是任意的数据类型,甚至也可以是一个对象。

三、对象的属性名与属性值

1、属性名:

1)对象的属性名不强制要求遵守标识符的规范。但是我们使用是还是尽量按照标识符的规范去做。
2)如果要使用特殊的属性名,不能采用.的方式来操作 需要使用另一种方式:

   语法:对象["属性名"] = 属性值

读取时也需要采用这种方式。

使用[]这种形式去操作属性,更加的灵活,在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性。

2、属性值

JS对象的属性值,可以是任意的数据类型,甚至也可以是一个对象。

3、代码实例:

<script type="text/javascript">

            var obj = new Object();

            /*
             * 向对象中添加属性
             * 属性名:
             *  - 对象的属性名不强制要求遵守标识符的规范
             *  - 但是我们使用是还是尽量按照标识符的规范去做
             * 
             */
            obj.name = "孙悟空";


            /*
             * 如果要使用特殊的属性名,不能采用.的方式来操作
             *  需要使用另一种方式:
             *      语法:对象["属性名"] = 属性值
             *  读取时也需要采用这种方式
             * 
             * 使用[]这种形式去操作属性,更加的灵活,
             *  在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性
             * 
             */
            obj["123"] = 789;
            obj["nihao"] = "你好";

            /*
             * 属性值
             *  JS对象的属性值,可以是任意的数据类型
             *      甚至也可以是一个对象
             */
            obj.test = true;
            obj.test = null;
            obj.test = {};




        </script>

四、for in 循环——枚举对象中的属性

1、语法:

  for(var 变量 in 对象){

  }

2、细节
for…in语句 对象中有几个属性,循环体就会执行几次
每次执行时,会将对象中的一个属性的名字赋值给变量

3、代码实例:

<script type="text/javascript">
            var obj = {
                name: "孙悟空",
                age: 18,
                gender: "男",
                address: "花果山"
            };

            //枚举对象中的属性
            //使用for ... in 语句
            /*
             * 语法:
             *  for(var 变量 in 对象){
             *  
             *  }
             * 
             * for...in语句 对象中有几个属性,循环体就会执行几次
             *  每次执行时,会将对象中的一个属性的名字赋值给变量
             */

            for(var n in obj) {
                console.log("属性名:" + n);

                console.log("属性值:" + obj[n]);
            }

            var obj2 = {
                name: "张三",
                age: 20,
                likes: "足球",
            };
            obj2.sex = "男";
            obj2.wife = "赵丽颖";
            obj2.wife1 = "范冰冰";
            obj2.wife = "韩雪";
            delete obj2.wife1;
            for(item in obj2) {
                console.log(item);
                console.log(obj2[item]);
            }
        </script>

五、使用细节和注意事项:

1、对象== 与变量==的区别 :对象比较的是指向堆数据的引用指针,变量比较数据值。

2、如何判断对象是不是数组?

         Array.isArray(对象);
        Object.prototype.toString([]);
        instance of

3、in运算符

通过该运算符可以检查一个对象中是否含有指定的属性,如果有则返回true,没有则返回false。

语法"属性名" in 对象

代码实例:

/*
             * in 运算符
             *  - 通过该运算符可以检查一个对象中是否含有指定的属性
             *      如果有则返回true,没有则返回false
             *  - 语法:
             *      "属性名" in 对象
             */
            console.log("name" in obj);

3、js中没有类的概念,取而代之的是函数.

4、js本质上只有函数;没有构造函数.只有函数的构造调用

5、js中除了五类基本数据类型,其他都是对象!!

6、 对象字面量的属性名可以加引号也可以不加,建议不加,如果要使用一些特殊的
名字,则必须加引号。

7、如果读取对象中没有的属性,不会报错而是会返回undefined。

8、对象的属性名不强制要求遵守标识符的规范。

9、JS对象的属性值,可以是任意的数据类型,甚至也可以是一个对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值