做了三年php,因为工作需要,目前要转javascript。前段时间去面试的时候遇到在javascript中实现继承的题,当时答的也不好,回来找了些资料,做个整理。
《javascript语言精粹》一书是提到了一点,使用伪类的方式来实现继承,大概就是构造一个伪类继承自基类,然后再定义它的constructor函数,并替换它的prototype为一个基类的实例来实现,但是这样就会有很多"无谓的"prototype操作细节。
Function.method('new', function(){
// 创建一个新对象,它继承自构造函数的原型对象
var that = Object.beget(this.prototype);
// 调用构造函数,绑定this到新对象上
var other = this.apply(that, arguments);
// 如果返回的不是一个对象,就返回这个新对象
return (typeof other === 'object' && other) || that;
});
// 定义一个构造函数并扩充它的原型
var Mammal = function(name){
this.name = name;
};
Mammal.prototype.get_name = function(){
return this.name;
};
Mammal.prototype.says = function(){
return this.saying || '';
};
// 构造一个实例
var myMammal = new Mammal('Herb the Mammal');
var name = myMammal.get_name();
var Cat = function(name){
this.name = name;
this.saying = 'meow';
};
// 替换Cat.prototype为一个新的Mammal实例
Cat.prototype = new Mammal();
// 扩充原型对象,增加方法
Cat.prototype.eat = function(){
// other
};
Cat.prototype.get_name = function(){
// other
};
var myCat = new Cat('mimi');
var says = myCat.says(); // 'meow'
var name = myCat.get_name();
myCat.eat();
分享到:
相关推荐
浅析Javascript原型继承,浅析Javascript原型继承
Javascript原型继承Javascript原型继承Javascript原型继承
理解Javascript原型继承原理
javascript原型继承,prototype的使用,可以像java一样继承
浅析javascript原型继承机制,浅析javascript原型继承机制
主要介绍了JavaScript使用原型和原型链实现对象继承的方法,简单讲述了javascript原型与原型链的原理,并结合实例形式详细分析了javascript中对象继承的常见实现技巧,需要的朋友可以参考下
JavaScript中实现继承最简单的方式就是使用原型链,将子类型的原型指向父类型的实例即可,即“子类型.prototype = new 父类型();”,实现方法如下: // 为父类型创建构造函数 function SuperType() { thi
JavaScript中基于原型的继承的实现与分析.pdf
浅析JavaScript实现基于原型对象的“继承”.pdf
在JavaScript中继承是一个非常复杂的话题,比其他任何面向对象的语言中的继承都复杂得多。在大多数其他面向对象语言中,继承一个类只需使用一个关键字即可。与它们不同,在JavaScript中要想达到传承公用成员的目的,...
javascript原型继承机制参考.pdf
javascript原型继承机制借鉴.pdf
javascript原型继承机制归类.pdf
JavaScript Inheritance ...And you think you’re so clever ...JavaScript的原型继承比类继承有更强大的表现力,现在就让我们来看看。 Java JavaScript 强类型 弱类型 静态 动态 基于类 基于原型 类
实现传统的类继承模型是很简单,但是实现 JavaScript 中的原型继承则要困难的多。 由于 JavaScript 是唯一一个被广泛使用的基于原型继承的语言,所以理解两种继承模式的差异是需要一定时间的,今天我们就来了解一下...
面向对象概念(对象封装,各种继承,闭包原理,this作用域等)介绍清晰易懂
javascript原型继承机制[整理].pdf
主要介绍了JavaScript使用prototype原型实现的封装继承多态,涉及javascript prototype与面向对象程序设计相关操作技巧,需要的朋友可以参考下
详解JavaScript中基于原型prototype的继承特性_.docx