JavaScript中的对象

1、对象的初识

(1)、对象的定义

现实生活中,万物皆对象,对象是一个具体的事物,看得见摸得着的实物。例如一本书,一辆汽车,一个人可以是“对象”,一个数据库,一张网页,一个与远程服务器的连接也可以是“对象”。
例子:
明星、女朋友、班主任、苹果、手机
周星驰、小明的女朋友、这个班的班主任、这个被咬了一口的苹果、小王的手机

在JS中,对象是一组无序的相关属性和方法的集合,所有的实物都是对象,例如字符串、数值、数组、函数等
属性:事物的特征,在对象中用属性来表示(常用名词)
方法:事物的行为,在对象中用方法来表示(常用动词)
例子:手机对象
属性:大小、颜色、重量、屏幕尺寸、厚度等
方法:打电话、发短信、聊微信、玩游戏等
例子:桌子
属性:长宽,材质,颜色,
方法:放东西,写字,吃饭
例子:电脑
属性:cpu,显卡,固态,颜色,尺寸,
方法:写代码,看视频,开会议,聊天

(2)、对象的意义

保存一个值时,可以使用变量
保存多个值(一组值)时,可以使用数组。但数组元素之间信息不连贯,无连接,表达不清楚
如果保存一个人完整的信息?
JS中的对象表达结构更清晰,更强大。

(3)、对象的分类

对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性,让信息与信息之间有联系,关系明确,操作起来也更加方便
1.内建对象--有ES标准中定义的对象,在任何的ES的实现中都可以使用,eg:Math String Boolean function object
2:宿主对象--由JS的运行环境提供的对象,目前来讲,主要指浏览器提供的对象,eg:BOM(浏览器对象模型) DOM(文档对象模型) 两组对象,里面各自都有很多
3:自定义对象--由开发人员创建的对象

2、创建对象:利用new Object创建对象

(1)、对象的基本操作

创建对象:
使用new关键字调用的函数,就是构建函数constructor, 构建函数是专门用来创建对象的函数
使用typeof检查一个对象时,则会返回object
向对象添加属性:对象.属性名=属性值;

<script>
      var obj = new Object();
      obj.name = "张三";//向obj中添加一个name属性,name属性值为'张三'
      obj.gender = "男";//向obj中添加一个gender属性
      obj.age = 18;//向obj中添加一个age属性
    </script>

注意:
我们是利用 =赋值运算符的方法,添加对象的属性和方法
每个属性和方法之间用;分号结束
修改对象属性:对象.属性名=新值

<script>
      obj.name = "孙悟空";
    </script>

删除对象的属性:delete 对象.属性名

<script>
      delete obj.name;//删除name属性
      console.log(obj.name)//undefined
    </script>

(2)、属性名与属性值

属性名:
-对象的属性名不强制性要求遵守标识符号的规范,什么名字都可以使用
-但是我们使用还是尽量按照标识符的规范去做
-如果要使用特殊的属性名,例如数字,不能采用"."的方式来操作,需要用对象名['属性名']来读取
使用[]这种形式去操作属性,更加灵活,在[]中可以直接传递一个变量,这样变量值是多少就会读哪个属性

<script>
      var obj = new Object();
      obj.name = "tom"; //向对象中添加属性
      obj["123"] = "你好";
      var n = "123"; //把'123'属性赋值给n
      console.log(obj["123"]); //读取obj的'123'属性
      console.log(obj[n]); //读取obj的'123'属性
    </script>

属性值:
JS对象的属性值,可以是任意的数据类型,甚至可以是对象

<script>
      obj.test = true;
      obj.test = undefined;
      obj.test = "true";
      obj.test = 123;
      // 创建一个对象
      var obj2 = new Object();
      obj2.name = "猪八戒";
      obj.test = obj2;
</script>

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

<script>
      //检查obj中是否含有test2属性
      console.log("test2" in obj);//false
      console.log("test" in obj);//true
    </script>

(3)、基本和引用数据类型

基本数据类型:String Number Boolean Null Undefined
引用数据类型:Object
1、JS中的变量都是保存到栈内存里的
2、基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量不会影响其他的变量
3、引用数据类型的值直接保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响
4、比较两个基本属性类型的值时,就是比较值;
比较两个引用数据类型时,它是比较对象的内存地址,如果两个对象时一模一样的,但是地址不同,他也会返回false

<script>
  //基本类型值存储在栈内存中
       var a=123;
       var b=a;
       a++;
       console.log("a="+a);//124
       console.log("b="+b);//123 ,因为b的变化不会影响到a
  
// 引用类型值存储在堆内存中,栈内存中保存的是指向堆内存的地址
       var obj=new Object;
       obj.name='java';
       var obj2=obj
      //  修改obj的name值
      obj.name='web'
       console.log(obj.name);//web
       console.log(obj2.name);//web
                              //因为obj和obj2指向同一个对象
    </script>

(3)、理解栈内存堆内存
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值