前端人公众号作者

看到什么记录什么

JS中多继承

下面的例子演示了如何使用Object.create()来实现类式继承。这是一个所有版本JavaScript都支持的单继承。

// Shape - 父类(superclass) 
function Shape() { 
this.x = 0; 
this.y = 0; 
}

// 父类的方法 
Shape.prototype.move = function(x, y) { 
this.x += x; 
this.y += y; 
console.info(‘Shape moved.’); 
};

// Rectangle - 子类(subclass) 
function Rectangle() { 
Shape.call(this); // call super constructor. 
}

// 子类续承父类 
Rectangle.prototype = Object.create(Shape.prototype); 
Rectangle.prototype.constructor = Rectangle;

var rect = new Rectangle();

console.log(‘Is rect an instance of Rectangle?’, 
rect instanceof Rectangle); // true 
console.log(‘Is rect an instance of Shape?’, 
rect instanceof Shape); // true 
rect.move(1, 1); // Outputs, ‘Shape moved.’ 
如果你希望能继承到多个对象,则可以使用混入的方式。

function MyClass() { 
SuperClass.call(this); 
OtherSuperClass.call(this); 
}

// 继承一个类 
MyClass.prototype = Object.create(SuperClass.prototype); 
// 混合其它 
Object.assign(MyClass.prototype, OtherSuperClass.prototype); 
// 重新指定constructor 
MyClass.prototype.constructor = MyClass;

MyClass.prototype.myMethod = function() { 
// do a thing 
}; 
Object.assign 会把 OtherSuperClass原型上的函数拷贝到 MyClass原型上,使 MyClass 的所有实例都可用 OtherSuperClass 的方法。Object.assign 是在 ES2015 引入的,且可用 polyfilled。要支持旧浏览器的话,可用使用 jQuery.extend() 或者 _.assign()。

阅读更多
文章标签: JS 继承 前端
个人分类: web前端
想对作者说点什么? 我来说一句

ArcGIS for JS基础课程

-

学院

1970年01月01日 08:00

JS多重继承

JS多重继承

qq_32667757 qq_32667757

2017-02-05 12:33:54

阅读数:721

没有更多推荐了,返回首页

不良信息举报

JS中多继承

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭