1、万物皆对象
在编程中, 万物皆对象 。我们在编程中,使用对象来描述万事万物。怎么描述呢?什么事物,只要描述了其特征和行为就可以知道在描述什么。
举个例子,我们猜个谜语:
什么东西,小时候是黑色的,长大是绿色的,小时候在水里游,长大了在岸上跳。
基本都可以猜到,我们描述的是青蛙。
其中,颜色是青蛙的特征,在水里游和在岸上跳是行为。
我们在编程中,也是使用 特征 和 行为 描述任何事物。
使用 属性 描述事物的 特征 ,使用 方法 来描述 行为 , 就是对象这种语法。
所以:对象就是属性和方法的集合
2、对象有什么用
我们之前学习过的对象:Math、Date
我们发现,只要学习对象的一些属性和方法,直接使用,就可以得到自己想要的效果。
例如-得到随机数:Math.random()
我们不需要关心随机数到底是怎么产生的,只要结果——不关心过程,只关心结果
就好像我们获取当前日期:
所以对象的好处在于:我们只要知道对象有什么属性和方法,不需要知道对象里面是如何实现的。我们实现一个效果的过程将大缩短,实现高效开发。
3、创建对象
字面量创建对象:
使用Object内置对象创建对象:
4、为对象添加值
对象的值(对象成员)有两类:
添加属性的语法:对象.属性 = 值
添加方法的语法:对象.方法名 = function(){}
字面量初始化对象:
一种是通过字面量的形式创建(语法糖):let obj = {}另外一种就是通过new Object()构造器函数的形式创建。对象字面量的声明方式比构造器函数更加方便。
通过delete操作符, 可以实现对对象属性的删除操作, 返回值是布尔值
通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined。
点获取对象属性值其实是通过."属性名"(属性名是字符串)和["属性名"]一样但和[变量名]不同此时是通过变量的值为属性名访问对象
属性名可以通过in操作符,如果指定的属性在指定的对象或其原型链中,则in 运算符返回true。这种方式的局限性就是无法区分自身和原型链上的属性,在只需要判断自身属性是否存在时,这种方式就不适用了。
hasOwnProperty()只有自身存在该属性时,才会返回true。适用于只判断自身属性的场景。
Object.assgin("目标对象","源对象"),可以通过assgin给对象一次增加多个属性
let obj = {}Object.assgin(obj,{a:1,b:2})
也可以通过点或者方括号修改对象的属性,注意点和查看对象一样
两个都可以查看name是否为obj的属性,in操作符可以查看name属性是否为obj的属性,但是除了会查找自身有没有这个属性还会查找原型链上是否有这个属性,hasOwnProperty只会在自身上查找这个属性。
对象是JavaScript的一个基本数据类型,是一种复合值,它将很多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值。即属性的无序集合。
javascript的数据有两种,简单数据和复杂数据。简单数据有undefined,null,boolean,number和string这五种。复杂数据只有一种,即对象(object)。
那么,在javascript中,对象有哪些呢?数组是对象,函数也是对象。