开发工具与关键技术:Adobe Dreamweaver JavaScript
作者:萧氏萧然
撰写时间:2020年10月 27日
知识点罗列:
对象属于一种复合的数据类型,在对象中可以存储多个不同数据类型的属性
对象的分类:
1.内建对象
- 由ES标准中定义的对象,在任何ES的实现中都可以使用
例如:Math String Number
Boolean Function Object…
2.宿主对象
-
由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
-
比如:BOM(浏览器对象模型) DOM(文档对象模型)
例如 我们常用的console.log() 就是DOM 中的对象
3.自定义对象
- 由咱们开发人员自己定义的对象
使用new关键字调用的函数,是构造函数constructor
构造函数是专门用来创建对象的函数
var
obj=new Object();//创建对象
在对象中保存的值称为属性:
向对象添加属性的语法: ①对象.属性名=属性值
② 对象[“属性名”]=属性值
读取对象属性的语法: ①对象.属性名 ②对象[“属性名”]
- 注意:如果对象中没有的属性,不会报错而是返回undefined
对象的属性值可以是任意的数据类型
属性名:
对象的属性名不强制要求遵守标识符规则
什么名称都可以,但是不允许这里使用,我们自己定义的使用都必须遵守标识符规则。
in运算符
过该运算符检查一个对象中是否含有指定的属性
果含有则返回true,如果没有则返回false
语法 :“属性名” in
对象
创建自定义对象最简单的方式就是创建一个Object的实例,然后再为他添加属性和方法,如下所示:
上面的例子创建了一个名为person的对象,并为他添加了三个属性和一个方法。其中sayName()方法用于显示name属性,this.name将被解析为person.name,上面的例子用对象字面量的语法可以写成如下这样:
这个例子中的person对象和前面的对象是一样的,都有相同的属性和方法。
虽然Object构造函数或者对象字面量的方法都可以用来创建单个对象,但是这些方法有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。为了解决这个方法,人们开始使用工厂模式的一种变体。
一、工厂模式
工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程。考虑到ECMAScript中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节,如下所示:
函数createPerson()能够根据接受的参数来构建一个包含所有必要信息的Person对象。可以多次调用这个函数,每次都会返回一个包含三个属性一个方法的对象。工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题,即怎么样知道这是哪个对象类型。
二、构造函数模式
像Array数组对象、Object这样的原生构造函数,在运行时会自动出现在执行环境中。此外,我们可以创建自定义个构造函数,从而定义自定义类型的属性和方法。例如,我们可以使用构造函数重写上个例子:
在这个例子中,Person()函数取代了createPerson()函数,我们注意到Person()与createPerson()的不同之处在于:
1、没有显式的创建对象
2、直接将属性和方法赋值给this对象
3、没有return语句
要创建一个Person实例,必须使用new操作符。以上这种方式会经过以下四个步骤:
1、创建一个新对象
2、将构造函数的作用域赋给新对象(因此this指向这个新对象)
3、执行构造函数中的代码
4、返回新对象