继承发展史

  1. 传统的模式 ==> 原型链
Grand.prototype.lastname = "Alex";
function Grand(){}var grand = new grand();Father.prototype = Grand;function Father(){this.name = "Aimee"
}
var father = new Father();
son,prototype = father;
function Son(){}
var son = new Son();
// 这种传统的继承,过多的继承了没用的属性
  1. 借用构造函数 ==> 利用call 和apply
    按理来说不算标准的继承模式
    缺点:
    不能继承借用构造函数的原型,但是能使用它的功能
    每次构造函数都要多走一个函数 == > 浪费效率
 function person(name,age,sex){this.name = name;this.age = age;this.sex = sex;}function Alex (name.age,sex,tall){person.call(this,name,age,sex);this.tall = tall;
}
var alex = new Alex();
  1. 共享原型
    这是一个比较好的继承方法
    但不能随便改动自己的原型
Father.prototype.lastname = "Alex"function Father(){}function son(){}function inherit(Target,origin){     // 两个参数 一个目标函数每一个是原始函数Target.prototype = origin.prototype;
}inherit(Son,Father);var father = new Father();var son = new Son();

既然这种方法不能改动原型,我们就在这种方法的前提上演变出完美的方法

圣杯模式

圣杯模式是在方法三的共有原型,但是在共有原型的基础上有改变。
共享原型是:son.prototype=father.prototype
圣杯模式是:另外加个构造函数 function F(){}当做中间层,然后让 F 和 father 共有一个原型 F.prototype=father.prototype,然后 son.prototype = new F();使用原型链形成了继承关系,现在改 son.prototype 就不会影响 father.prototype

function inherit(Target,origin){function F(){};F.prototype = origin.prototype;Target.prototype = F.prototype;Target.prototype.cunstuctor = Target;// 防止constuctor指向紊乱,让Target构造函数指向归位Target.prototype.uber origin.prototype;// 找到自己的超级父级,为了让我们知道Target到底继承自谁
}
Father.prototype.lastname = "Alex";
function Father(){}
function Son(){}
inherit(Son,Father);
var son = new Son();
var father new Fahter();

有一种高端的写法 YU13 雅虎

var inherit (function(){var F = function(){};
return  function(Target,Origin){F.prototype = Oigin.prototype;target.prototype = new F ();Target.prototype.constuctor = Target;Target.prototype.uber = Origin.prototype;   }})

利用了闭包的机制 ,形成闭包,让F 变成了私有化变量

JS继承--圣杯模式的详解相关推荐

  1. js继承的六种方式详解--认真看完你就会了

    今天 主要来研究一下继承这个东西 继承 共分为六种继承方式: 原型链继承 盗用构造函数继承 组合继承 实例继承(原型式继承) 寄生式继承 寄生式组合继承 原型链继承 原型链继承是ES主要继承方法,其中 ...

  2. JS es6的Class类详解

    文章目录 JS es6的Class类详解 class基本语法 Class的基本语法之constructor Class的基本语法之类的调用方式 Class的基本语法之getter和setter Cla ...

  3. python类是实例的工厂_Python设计模式之工厂方法模式实例详解

    本文实例讲述了Python设计模式之工厂方法模式.分享给大家供大家参考,具体如下: 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类, ...

  4. JS 中 valueOf() 方法的详解

    JS 中 valueOf() 方法的详解 JavaScript 中的 valueOf() 方法用于返回指定对象的原始值,若对象没有原始值,则将返回对象本身.通常由JavaScript内部调用,而不是在 ...

  5. CentOS下Hive2.0.0集群模式安装详解

    本文环境如下: 操作系统:CentOS 6 32位 Hive版本:2.0.0 JDK版本:1.8.0_77 32位 Hadoop版本:2.6.4 MySQL版本:5.6.30 1. 准备工作 1.1 ...

  6. Kafka单机、集群模式安装详解(二)

    本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11) 接上篇 Kafka单机.集群模式安装详解(一) 6. ...

  7. Java多线程编程中Future模式的详解

    转载自 https://www.cnblogs.com/winkey4986/p/6203225.html Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker ...

  8. js showModalDialog参数的使用详解(转)

    js showModalDialog参数的使用详解_javascript技巧_脚本之家 http://www.jb51.net/article/45281.htm 本篇文章主要是对js中showMod ...

  9. [js]JavaScript Number.toPrecision() 函数详解

    [js]JavaScript Number.toPrecision() 函数详解 JavaScript: numberObject.toPrecision( [ precision ] ) 如果没有提 ...

  10. java 组合对象_Java 中组合模型之对象结构模式的详解

    Java 中组合模型之对象结构模式的详解 一.意图 将对象组合成树形结构以表示"部分-整体"的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 二.适用性 ...

最新文章

  1. 发表的原创文章还希望大家多提宝贵意见!
  2. 0330 第九次课:软件包安装及卸载
  3. AI人工智能资料分享来袭,还不快来!
  4. 关于 web.config impersonate 帐号模拟
  5. system类的 静态方法可以启动垃圾回收器。_跟小伟一起学习类加载机制
  6. iPhone 无线投影到 Mac
  7. WPF基础五:UI①布局元素StackPanel
  8. 死亡细胞Mod制作教程
  9. 华三华为设备序列号查看生产日期
  10. 网页前端设计之多选按钮
  11. RocketMq配置rocketmq-console控制台管理账号密码
  12. 玉米迷宫,Meteor Shower S,单词接龙
  13. 计算机无法转换输入发,电脑无法切换输入法怎么办
  14. 仿慕课网Android端app——慕课Ime(自写服务器接口)
  15. vos3000及外呼系统编码所占带宽详细说明
  16. Servlet之 http://localhost:8080/ 详解
  17. 南邮校园网CSDN 等部分网站图片无法加载的问题
  18. 面试答案来了,从用户角度看如何能做出合格的产品?
  19. flutter版本管理工具fvm及GUI工具Sidekick
  20. PDF去除水印的问题

热门文章

  1. 最薄翻转笔记本 联想Yoga13-IFI 6700
  2. 2021湖北技能高考成绩时间查询,2020湖北技能高考成绩查询时间
  3. this的三种用法 详解
  4. php rrd update,通过shell脚本批量更新Cacti的RRD数据库文件
  5. Android 中Goolgle 相关服务的移植[转]
  6. win11系统中文名改英文名(win11、win10修改用户名)超详细图文
  7. import time python_Python——入门级(import 模块)
  8. 批量将B站学习视频以MP4格式下载到本地
  9. CRT和LCD显示器的区别
  10. java实现发送国际短信的功能