javascript --- 混入
显示混入:
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 --- 混入相关推荐
- [译] 前端攻略-从路人甲到英雄无敌二:JavaScript 与不断演化的框架
本文翻译自FreeCodeCamp的from-zero-to-front-end-hero-part. 继续译者的废话,这篇文章是前端攻略-从路人甲到英雄无敌的下半部分,在上半篇中介绍了HTML与CS ...
- 《JavaScript应用程序设计》一一2.3 lambdas
本节书摘来华章计算机出版社<JavaScript应用程序设计>一书中的第2章,第2.3节,作者:Eric Elliott 更多章节内容可以访问云栖社区"异步社区"公众号 ...
- 《JavaScript面向对象精要》读书笔记
JavaScript(ES5)的面向对象精要 标签: JavaScript 面向对象 读书笔记 2016年1月16日-17日两天看完了<JavaScript面向对象精要>(参加异步社区的活 ...
- [译] JavaScript 中的 CSS:基于组件的样式的未来
本文讲的是[译] JavaScript 中的 CSS:基于组件的样式的未来, 原文地址:CSS in JavaScript: The future of component-based styling ...
- php 数组去重_数组去重(JavaScript 为例)
数组去重,就是在数组中查找相同的元素,保留其中一个,去除其他元素的程. 从这句话揭示了数组去重的两个关键因素: 找到重复项 去除重复项 本文告诉你在遇到去重问题时该如何思考,并以 JavaScript ...
- 《JavaScript应用程序设计》一一3.2 流式JavaScript
本节书摘来华章计算机出版社<JavaScript应用程序设计>一书中的第3章,第3.2节,作者:Eric Elliott 更多章节内容可以访问云栖社区"华章计算机"公众 ...
- 《JavaScript模式》精要
P25. 如何避免eval()定义全局变量? 如: var jsstring = "var un = 1;"; eval(jsstring); console.log(typeof ...
- JavaScript 教程(二)
面向对象编程 实例对象与 new 命令 JavaScript 语言具有很强的面向对象编程能力,这里介绍 JavaScript 面向对象编程的基础知识 对象是什么 面向对象编程(Object Orien ...
- 精通JavaScript--01面向对象JavaScript
JavaScript中什么是构造函数:http://www.qdfuns.com/notes/23720/d3990bb38177fd0c14789a7c54e614d9.html 深入理解js构造函 ...
最新文章
- 第八章 异常控制流 笔记
- JavaScript闭包原理与用法实例
- python 线程指南
- Oracle_Net_Configuration_Assistant_配置步骤
- 【C++学习之路】第二章——C++基础语法学习(1)之黑客攻击系统
- python中方法调用方法_Python中实现结构相似的函数调用方法
- 4999元!iQOO 9 Pro赛道版今日预售:创新性采用芳纶纤维材质
- php 数组 闭包,PHP如何用array_filter加闭包函数过滤数组?
- linux python指令大全,Linux常用指令
- SQLServer实现将VARCHAR字符型对象转化为int/float数值型对象后排序、对VARCHAR对象截取指定部分再转化为数值对象进行排序
- 计算机五笔字型编码方法,《计算机汉字输入五笔字型打字速成》汉字编码-输入.pdf...
- sm是什么职位_销售职位sm. asm. sr. dsr分别是什麽意思
- 【JZOJ A组】【NOIP2019模拟】最短路(tiring)
- 印度软件外包发展简记
- 分布式链路追踪系统深入理解
- 字节跳动校招编程题——特征提取 python
- java 组织机构代码_JAVA实现社会统一信用代码较验
- 使用Rook+Ceph在Kubernetes上作持久存储
- [RK3288][Android6.0] WiFi的dts配置说明(AP6335)
- 微信小程序开发采坑记录1
热门文章
- base cap 分布式_高并发架构系列:详解分布式一致性ACID、CAP、BASE,以及区别
- mysql对所有列的数据进行修改6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (3)...
- mysql数据库出现幻读,MySQL 幻读怎样处理?_数据库
- 理解依赖注入(IOC)
- JRE System Library和 Referenced Libraries 的区别和来源
- window screen (获取屏幕信息)
- 什么样的数据应该放入缓存
- java.lang.String小测试
- static_cast, dynamic_cast, const_cast探讨【转】
- 第一个程序,Hello World