显示混入:

function mixin(sourceObj, targetObj){for(var key in sourceObj){   // 遍历source中的所有属性if(!(key in targetObj)) {  // 找到targetz中没有的属性targetObj[key] = sourceObj[key];}}return targetObj;
}var Vehicle = {engines: 1,iginition: function() {console.log("Turning on my engine.");},drive: function(){this.ignition();console.log("Steering an moving forward!" );}
};var Car = mixin( Vehicle, {wheels: 4,drive: function() {Vehicle.drive.call( this);console.log(" Rolling on all " + this.wheels + " wheels!");}
});

寄生继承:

// 既是显式的又是隐式的
function Vehicle() {this.engines = 1;
}
Vehicle.prototype.iginition = function() {console.log("Turning on my engine.");
}
Vehicle.prototype.drive = function() {this.ignition();console.log("Steering and moving forward!");
};// "寄生类"Car
function Car(){var car = new Vehicle();car.wheels = 4;var vehDrive = car.drive;car.drive = function(){vehDrive.call(this);console.log("Rolling on all" + this.wheels + "wheels!);}return car;
}
var myCar = new Car();myCar.drive();// Turning on my engine.
// Steering and moving forward!
// Rolling on all 4 wheels!

隐式混入:

var Something = {cool: function() {this.greeting = "Hello World";this.count = this.count ? this.count + 1: 1;     // 存在count,次数加1,否则初始值为1}
};
Something.coll();
Something.greeeting = "Hello World";
Something.count = 1;var Another = {cool: function() {Something.cool.call(this);  // 执行Something.cool,作用域是Another的}
};
Another.cool();
Another.greeting = "Hello World";
Another.count = 1;  // 注.Another.count 和 Something.count不共享状态.

参考《你不直到的JavaScript》(上卷) P135~P140

javascript --- 混入相关推荐

  1. [译] 前端攻略-从路人甲到英雄无敌二:JavaScript 与不断演化的框架

    本文翻译自FreeCodeCamp的from-zero-to-front-end-hero-part. 继续译者的废话,这篇文章是前端攻略-从路人甲到英雄无敌的下半部分,在上半篇中介绍了HTML与CS ...

  2. 《JavaScript应用程序设计》一一2.3 lambdas

    本节书摘来华章计算机出版社<JavaScript应用程序设计>一书中的第2章,第2.3节,作者:Eric Elliott 更多章节内容可以访问云栖社区"异步社区"公众号 ...

  3. 《JavaScript面向对象精要》读书笔记

    JavaScript(ES5)的面向对象精要 标签: JavaScript 面向对象 读书笔记 2016年1月16日-17日两天看完了<JavaScript面向对象精要>(参加异步社区的活 ...

  4. [译] JavaScript 中的 CSS:基于组件的样式的未来

    本文讲的是[译] JavaScript 中的 CSS:基于组件的样式的未来, 原文地址:CSS in JavaScript: The future of component-based styling ...

  5. php 数组去重_数组去重(JavaScript 为例)

    数组去重,就是在数组中查找相同的元素,保留其中一个,去除其他元素的程. 从这句话揭示了数组去重的两个关键因素: 找到重复项 去除重复项 本文告诉你在遇到去重问题时该如何思考,并以 JavaScript ...

  6. 《JavaScript应用程序设计》一一3.2 流式JavaScript

    本节书摘来华章计算机出版社<JavaScript应用程序设计>一书中的第3章,第3.2节,作者:Eric Elliott 更多章节内容可以访问云栖社区"华章计算机"公众 ...

  7. 《JavaScript模式》精要

    P25. 如何避免eval()定义全局变量? 如: var jsstring = "var un = 1;"; eval(jsstring); console.log(typeof ...

  8. JavaScript 教程(二)

    面向对象编程 实例对象与 new 命令 JavaScript 语言具有很强的面向对象编程能力,这里介绍 JavaScript 面向对象编程的基础知识 对象是什么 面向对象编程(Object Orien ...

  9. 精通JavaScript--01面向对象JavaScript

    JavaScript中什么是构造函数:http://www.qdfuns.com/notes/23720/d3990bb38177fd0c14789a7c54e614d9.html 深入理解js构造函 ...

最新文章

  1. 第八章 异常控制流 笔记
  2. JavaScript闭包原理与用法实例
  3. python 线程指南
  4. Oracle_Net_Configuration_Assistant_配置步骤
  5. 【C++学习之路】第二章——C++基础语法学习(1)之黑客攻击系统
  6. python中方法调用方法_Python中实现结构相似的函数调用方法
  7. 4999元!iQOO 9 Pro赛道版今日预售:创新性采用芳纶纤维材质
  8. php 数组 闭包,PHP如何用array_filter加闭包函数过滤数组?
  9. linux python指令大全,Linux常用指令
  10. SQLServer实现将VARCHAR字符型对象转化为int/float数值型对象后排序、对VARCHAR对象截取指定部分再转化为数值对象进行排序
  11. 计算机五笔字型编码方法,《计算机汉字输入五笔字型打字速成》汉字编码-输入.pdf...
  12. sm是什么职位_销售职位sm. asm. sr. dsr分别是什麽意思
  13. 【JZOJ A组】【NOIP2019模拟】最短路(tiring)
  14. 印度软件外包发展简记
  15. 分布式链路追踪系统深入理解
  16. 字节跳动校招编程题——特征提取 python
  17. java 组织机构代码_JAVA实现社会统一信用代码较验
  18. 使用Rook+Ceph在Kubernetes上作持久存储
  19. [RK3288][Android6.0] WiFi的dts配置说明(AP6335)
  20. 微信小程序开发采坑记录1

热门文章

  1. base cap 分布式_高并发架构系列:详解分布式一致性ACID、CAP、BASE,以及区别
  2. mysql对所有列的数据进行修改6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (3)...
  3. mysql数据库出现幻读,MySQL 幻读怎样处理?_数据库
  4. 理解依赖注入(IOC)
  5. JRE System Library和 Referenced Libraries 的区别和来源
  6. window screen (获取屏幕信息)
  7. 什么样的数据应该放入缓存
  8. java.lang.String小测试
  9. static_cast, dynamic_cast, const_cast探讨【转】
  10. 第一个程序,Hello World