js 实现继承相关
☊ 【要求】:实现一个Animal类, 和一个继承它的Dog类
☛ 【实现】:
function Animal(name) {
this.name = name;
}
Animal.prototype.cry = function() {
console.log('I am ' + this.name);
}
function Dog(name) {
Animal.call(this, name);
this.hobby = 'running';
}
Dog.prototype = new Animal();
// 注意要放在上条语句的下面
Dog.prototype.run = function() {
console.log('I like ' + this.hobby);
}
var dog = new Dog('doggy');
dog.run(); // 'I like running'
dog.cry(); // 'I am doggy'
☊ 【要求】:用JS实现一个类继承函数
function extend(parent){ /*...*/}
☛ 【实现】:
function Animal(name) {
this.name = name;
}
Animal.prototype.cry = function() {
console.log('I am ' + this.name);
}
var People = {
name: 'bb',
say: function() {
console.log(this.name);
}
}
function extend(parent) {
if (typeof parent == 'function') {
function child() {
parent.call(this, ...arguments);
}
// 可以在 child 的原型上自己定义方法,而不会影响 parent 的原型
child.prototype = new parent();
}
if (typeof parent == 'object') {
function child() {};
// 将 parent 作为 child 的原型
child.prototype = parent;
}
return child;
}
var Pet = extend(Animal);
var dog = new Pet('doggy'); // child {name: "doggy"}
dog.name = 'Doggy';
dog.cry(); // 'I am Doggy'
var Person = extend(People);
var bob = new Person; // child {name: "Bob"}
bob.name = 'Bob';
bob.say(); // 'Bob'
js 实现继承相关的更多相关文章
- js实现继承的两种方式
这是面试时面试官会经常问到问题: js的继承方式大致可分为两种:对象冒充和原型方式: 一.先说对象冒充,又可分为3种:临时属性方式.call().apply(): 1.临时属性方式: 当构造对象son ...
- 浅谈JS的继承
JS继承 继承是OO语言中最为人津津乐道的概念,许多OO语言都支持两种方式的继承:接口继承:实现继承. 接口继承:只继承方法签名. 实现继承:继承实际的方法. 由于ES里函数没有签名,所以在ES里面无 ...
- JS对象继承篇
JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...
- js实现继承的5种方式 (笔记)
js实现继承的5种方式 以下 均为 ES5 的写法: js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承 ...
- js实现继承的方式总结
js实现继承的5种方式 以下 均为 ES5 的写法: js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承 ...
- 【09-23】js原型继承学习笔记
js原型继承学习笔记 function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a ...
- js实现继承
js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现 ...
- JS类继承常用方式发展史
JS类继承常用方式发展史 涉及知识点 构造函数方式继承 1-继承单个对象 1.1 多步走初始版 1.2 多步走优化版 1.3 Object.create()方式 2-继承多个对象 2.1 遍历 Obj ...
- js实现继承的5种方式
js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现 ...
随机推荐
- [问题2014A07] 复旦高等代数 I(14级)每周一题(第九教学周)
[问题2014A07] 设 \(A\) 是有理数域 \(\mathbb{Q}\) 上的 4 阶方阵, \(\alpha_1,\alpha_2,\alpha_3,\alpha_4\) 是 \(\mat ...
- iOS 键盘类型定制归纳
一.键盘风格 支持8种风格键盘. typedef enum { UIKeyboardTypeDefault, // 默认键盘:支持所有字符 UIKeyboardTypeASCIICapable, // ...
- Java开发中经典的小实例-(打印九九乘法表)
public class Test16 { public static void main(String[] args) { // TODO Auto-generated meth ...
- End Routine
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Java处理excel文件
好久好久没写blog了,感觉都生锈了,最近弄了弄java处理excel,特来简单粘贴一下: package excel; import java.io.BufferedInputStream; imp ...
- hdu4511小明系列故事——女友的考验(ac自动机+最短路)
链接 预处理出来任意两点的距离,然后可以顺着trie树中的节点走,不能走到不合法的地方,另开一维表示走到了哪里,依次来更新. 注意判断一下起点是不是合法. #include <iostream& ...
- 编写高效且优雅的 Python 代码
http://python.jobbole.com/86808/ http://python.jobbole.com/86869/?utm_source=blog.jobbole.com&ut ...
- 使用新版Android Studio检测内存泄露和性能
内存泄露,是Android开发者最头疼的事.可能一处小小的内存泄露,都可能是毁于千里之堤的蚁穴. 怎么才能检测内存泄露呢?网上教程非常多,不过很多都是使用Eclipse检测的, 其实1.3版本以后的 ...
- 解决JSP路径问题的方法(jsp文件开头path, basePath作用)
原文:http://blog.csdn.net/mingxunzh/article/details/4627185 在JSP中的如果使用 "相对路径" 则有可能会出现问题. 因为 ...
- NSComparisonResul、NSNotFound、NSEnumerationOptions......的用处
NSNotFound 定义一个值,用于指示请求项找不到或不存在.Defines a value that indicates that an item requested couldn’t be fo ...