JavaScript中的类与实例实现方法

前端之家收集整理的这篇文章主要介绍了JavaScript中的类与实例实现方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了JavaScript中的类与实例实现方法分享给大家供大家参考。具体如下:

JavaScript 中没有父类,子类的概念,也没有class 和 instance 的概念,全靠 prototype chain来实现继承. 当查找一个对象的属性时,JavaScript 会向上遍历 prototype chain,直到找到对应的属性为止. 有几种方法,可以使得 JavaScript 模拟出 class 和 instance 的概念.

1. 直接使用构造函数来创建对象,在构造函数内部使用 this指代对象实例.

代码如下:
再看另外一个例子:
代码如下:
以上,先指定好一个构造函数对象的 prototype 属性. 然后 new 一个该对象实例,即可调用 prototype 中指定的方法.

2. 使用 Object.create()方法来创建对象

代码如下:
方法,比构造函数方法更简便,但不能实现私有属性和私有方法,且实例对象之间不能共享数据,对 class 的模拟仍不够全面.

3. 荷兰程序员 Gabor de Mooij 提出的极简主义法(minimalist approach). 推荐用法.

代码如下:
不使用 prototype 和 this,仅需要自定义一个构造函数init. 继承的实现也很简单.
代码如下:
方法的重载 cat sound cat.sleep(); cat sleep
私有属性和私有方法的使用:
代码如下:
属性 animal.makeSound = function() { console.log(sound); }; return animal; } }; var animal4 = Animal.init(); Animal.sound; // undefined 私有属性只能通过对象自身的方法来读取. animal.sound; // undefined 私有属性只能通过对象自身的方法来读取 animal4.makeSound(); private animal sound
只要不是定义在animal对象上的属性方法都是私有的,外界不能访问. 类与实例之间,可以做到数据共享.
代码如下:
属性 'common animal sound' animal5.sound; // 实例对象不能访问类属性 undefined animal6.sound; undefined animal5.commonSound(); common animal sound animal6.commonSound(); common animal sound animal5.changeSound(); // 修改属性 undefined Animal.sound; 'common animal sound' animal5.commonSound(); common animal sound animal6.commonSound(); common animal sound
如 Animal.sound 就是类与实例的共有属性,可以视为类属性和类方法. 若一个实例修改了该共有属性,则该类和其他实例的共有属性也对应修改了. 综上,就是 JavaScript 中模拟的 class 和 instance 的概念和用法.

希望本文所述对大家的javascript程序设计有所帮助。

猜你在找的JavaScript相关文章