基于原型的JavaScript

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

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

相关文章
|
JavaScript 前端开发 Java
深入JS面向对象(原型-继承)(一)
深入JS面向对象(原型-继承)
31 0
|
1月前
|
JavaScript 前端开发
js开发:请解释原型继承和类继承的区别。
JavaScript中的原型继承和类继承用于共享对象属性和方法。原型继承利用原型链查找属性,节省内存但不支持私有成员。类继承通过ES6的class和extends实现,支持私有成员但占用更多内存。两者各有优势,适用于不同场景。
19 0
|
3月前
|
存储 JavaScript 前端开发
构造函数和原型的结合应用:轻松搞定JS的面向对象编程(三)
构造函数和原型的结合应用:轻松搞定JS的面向对象编程
|
3月前
|
设计模式 JavaScript 前端开发
构造函数和原型的结合应用:轻松搞定JS的面向对象编程(一)
构造函数和原型的结合应用:轻松搞定JS的面向对象编程
|
3月前
|
前端开发 JavaScript
JavaScript中的原型和原型链
JavaScript中的原型和原型链
|
3月前
|
JavaScript 前端开发
【面试题】最详尽的 JS 原型与原型链终极详解(一)
【面试题】最详尽的 JS 原型与原型链终极详解(一)
|
3月前
|
JavaScript 前端开发
手把手教你学会js的原型与原型链,猴子都能看懂的教程
手把手教你学会js的原型与原型链,猴子都能看懂的教程
|
3月前
|
存储 JavaScript 前端开发
构造函数和原型的结合应用:轻松搞定JS的面向对象编程(二)
构造函数和原型的结合应用:轻松搞定JS的面向对象编程
|
3月前
|
JavaScript 前端开发
JavaScript原型,原型链
JavaScript原型,原型链
|
1月前
|
JavaScript
JS数组增删方法的原理,使用原型定义
JS数组增删方法的原理,使用原型定义