编程语言
首页 > 编程语言> > Java Script面向对象详解(一`)

Java Script面向对象详解(一`)

作者:互联网

JavaScript面向对象详解(一)

ES6之前的JavaScript面向对象比较不好理解,涉及到很多知识和思想。

ES6增加了class和extends来实现类的封装和继承,但是通过babel转换成ES5之后还是之前的一套逻辑。

这里,我打算用四篇文章,来讲解一下关于ES5中面向对象的知识体系,一起学习一下吧!

一. JavaScript的对象

1.1. 传统对象 vs JavaScript对象

传统的面向对象

JavaScript的面向对象

1.2. 简单的方式创建对象

创建自定义对象最简单的方式就是创建一个Object实例, 然后添加属性和方法

代码解析:

插播一个信息: 函数和方法的关系

OK, 我们继续JavaScript面向对象之旅.

后来, 对象字面量称为创建这种对象的首选方式

1.3. JavaScript中属性的特性

JavaScript中关于属性有一个比较重要的概念: 属性描述符

JavaScript中开始拥有了一种描述属性特征的特性(即属性描述符)。

常见的属性特性有哪些呢?

这些属性特性是什么东西呢?

案例练习:

注意:在使用defineProperty方法定义新属性时(非修改旧属性),如果不指定,configurable, enumerable和writable特性的默认值都是false。

也就是上面的代码等同于:

数据属性:

访问器属性:

定义一个访问器属性:

注意: getter和setter都是可选的,在非严格模式下,只指定了getter却进行了写入操作,写入的值会被忽略; 只指定了setter却进行了读取操作,读取到的属性值为undefined。在严格模式下,则都会报错。

二. JavaScript创建对象

虽然Object构造函数或对象字面量可以用来创建单个对象

但是这些方式有个明显的缺点: 使用同一个接口创建很多对象, 会产生大量的重复代码.

我们会有一些列的方式来解决这个问题, 最终得到我们最佳理想的方式来创建对象.

2.1. 使用工厂模式

工厂模式是一种非常常见的设计模式, 这种模式抽象了创建具体对象的过程.

因为JavaScript中没法创建类, 开发人员就发明了一种函数, 用函数来封装以特定接口创建对象的细节.

工厂模式创建对象:

代码解析:

2.2. 构造函数模式

JavaScript中的构造函数可用来创建特定类型的对象。

使用构造函数模式创建对象:

代码解析:

在前面例子的最后,person1和person2分别保存着Person的一个不同的实例。

我们也可以通过instanceof来查看它的类型

2.3. 关于构造函数

关于构造函数

把构造函数当做普通的函数去调用

构造函数来创建对象的缺陷:

构造函数的换一种形式:

有什么问题呢?

我们可以验证一下这是两个不同的函数:

有没有办法让它们是同一个函数呢? 使用全局函数即可

新的问题:

有没有新的解决方案呢?使用原型模式.

标签:Java,函数,Script,对象,JavaScript,定义,面向对象,属性,构造函数
来源: https://www.cnblogs.com/three01/p/16654040.html