基于原型的JavaScript

简介: 实现JS的重要设计模式—原型模式。

编程语言大致可以分为两类:一类为静态型语言,一类为动态型语言。静态类型语言在编译时就能发现类型不匹配的错误,降低了代码出错率,缺点就是需要按照强契约来编写程序。动态类型语言代码就看起来简洁的多,需要的代码量更少,但无法保证变量的类型,例如JS。
了解原型模式之前,先来复习下面向对象六大原则:
开闭原则— 对扩展开放,对修改关闭
里氏代换原则— 所有引用基类的地方都可以透明的使用其子类的对象
依赖倒转原则—针对接口编程,依赖于抽象不依赖具体
接口隔离原则—使用多个隔离的接口而不是单独的一个
迪米特法则—最少知道原则—一个实体尽量不与其他实体发生相互作用
单一职责原则—一个类只负责一项职责
在以原型模式为基础的JS语言中,我们可以不再关注对象的具体类型,找到一个对象,通过克隆来创建一个一模一样的对象。
比如火影中的影分身,我们如果用代码实现一个火影的分身,还要保存本尊的状态,血量,技能树等。通过原型模式,我们可以直接从原型对象复制出来一个。而这种方式实现的关键,就是JS语言是否提供了这中克隆方法,它提供了,在ES5中的Object.creat 方法。
需要注意的是原型模式的目的不是要得到一个一模一样的对象,而是提供了一个更方便的方法去创建某个类型的对象,克隆只是手段
在JS语言中,提到原型模式就不得不提到原型继承。
JS中绝大部分的数据都是对象,JS有一个根对象,其余所有对象都来源于这个根对象。原型继承依赖于原型链。那么什么是原型链呢?
JS在创建对象的时候,会有_proto_的内置属性指向创建它的函数的原型prototype。简单来说就是obj.-_proto_-=Constructor.prototype对象原型指向创建它的函数的对象原型。

相关文章
|
4月前
|
JavaScript 前端开发
js开发:请解释原型继承和类继承的区别。
JavaScript中的原型继承和类继承用于共享对象属性和方法。原型继承通过原型链实现共享,节省内存,但不支持私有属性。
39 0
|
4月前
|
JavaScript 前端开发 Java
深入JS面向对象(原型-继承)(三)
深入JS面向对象(原型-继承)
46 0
|
4月前
|
JavaScript 前端开发 Java
深入JS面向对象(原型-继承)(一)
深入JS面向对象(原型-继承)
49 0
|
29天前
|
JavaScript 前端开发
如何在JavaScript中实现基于原型的继承机制
【8月更文挑战第14天】如何在JavaScript中实现基于原型的继承机制
24 0
|
8天前
|
JavaScript 前端开发
JavaScript基础知识-原型(prototype)
关于JavaScript基础知识中原型(prototype)概念的介绍。
18 1
|
27天前
|
JavaScript 前端开发
JavaScript中什么是原型?有什么用?
JavaScript中什么是原型?有什么用?
12 1
|
1月前
|
JavaScript 前端开发 Java
什么是JavaScript原型对象
【8月更文挑战第2天】什么是JavaScript原型对象
48 9
|
4月前
|
JavaScript
JS数组增删方法的原理,使用原型定义
JS数组增删方法的原理,使用原型定义
|
3月前
|
设计模式 JavaScript 前端开发
【JavaScript】深入浅出JavaScript继承机制:解密原型、原型链与面向对象实战攻略
JavaScript的继承机制基于原型链,它定义了对象属性和方法的查找规则。每个对象都有一个原型,通过原型链,对象能访问到构造函数原型上的方法。例如`Animal.prototype`上的`speak`方法可被`Animal`实例访问。原型链的尽头是`Object.prototype`,其`[[Prototype]]`为`null`。继承方式包括原型链继承(通过`Object.create`)、构造函数继承(使用`call`或`apply`)和组合继承(结合两者)。ES6的`class`语法是语法糖,但底层仍基于原型。继承选择应根据需求,理解原型链原理对JavaScript面向对象编程至关重要
70 7
【JavaScript】深入浅出JavaScript继承机制:解密原型、原型链与面向对象实战攻略
|
1月前
|
设计模式 JavaScript 前端开发
js对原型和继承的理解
了解JavaScript中原型和继承的概念对于编写优雅高效的代码、理解库和框架的内部机制以及执行高级设计模式都有着重要的意义。
35 0