#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

时间:2021-12-06 19:30:20

1.JavaScript中,函数(function)就是对象

JavaScript中,没有“方法重载”的概念

“add”是指向对象的引用,定义了两个function,add最后指向后面定义的function

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

JavaScript中有一个Function对象,所有定义的函数,都是Function对象类型的

Function对象接收的所有参数都是字符串类型的,其中最后一个参数就是要执行的函数体,而前面的参数是函数接收的参数

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

JavaScript中,每个函数都有一个隐含的对象:arguments,表示给函数实际传递的参数。arguments的属性:length,表示给函数赋值的参数个数

通过判断arguments对象的长度,间接实现重载

add的length属性:表示函数期望接收的参数个数

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象执行结果:#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象


2.JavaScript    5种原始数据类型

Undefined,这个数据类型的值,只有一个:undefined

Null,这个数据类型的值,只有一个:null

Boolean,这个数据类型的值,有两个:true、false

Number

String

3.typeOf运算符:一元运算符,用户获取变量的数据类型。返回值有5个undefined、boolean、number、string、object

4.JavaScript     3种强制类型转换

Boolean(value)

Number(value)

String(value)

5.JavaScript中,可以动态添加对象的属性,也可以动态删除对象的属性

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

定义对象的另一种方式:由逗号分隔的属性名和属性值

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

6.JavaScript数组

定义数组的第一种方式:

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

定义数组的第二种方式:

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

对于JS数组的sort方法,它会将待排序的内容转换为字符串(调用toString()方法),按照字符串的先后顺序进行排序

如果想对数组元素进行排序,我们需要自己编写排序规则,再把排序规则传递给  sort  方法

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

7.匿名函数

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

8.JS中定义对象的几种方式

(1)基于已有对象,扩充其属性和方法

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象提示框显示的是:lisi

(2)工厂方式

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

带参数的构造函数方式

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

对上述代码进行改进,期望多个对象共享同一个方法

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

(3)构造函数方式定义对象

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

在构造对象时,让函数带参数:

(4)原型(prototype)方式定义对象

单纯使用原型方式定义类,无法在构造函数中,为属性赋初值,只能在对象生成后,再改变属性值

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象运行结果:修改之后的“lisi,123”、未修改的“zhangsan,123”

将username改成数组

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象

运行结果:“zhangsan,lisi,456”、“zhangsan,lisi,123”

为什么没有对username的值进行修改,但是person2也改变了?

原理:把属性附加到原型属性上面,声明的p1和p2分别指向两个Person对象,通过原型定义的对象属性,只有一份,所有的对象共享属性。一个对象改变了,该属性也会反映到其他对象中

结合构造函数方式,对原型方式进行改进

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象运行结果:“zhangsan,123”、“lisi,123”

(5)动态原型方式定义对象    把方法定义在构造函数里,但是同时保证方法共享,方法只在第一次时创建

在构造函数中,通过  标志量   让所有对象共享一个方法,而每个对象拥有自己的 属性

#笔记#圣思园 JavaWeb 第53讲——function对象、工厂方式、构造函数方式、原型方式定义对象