Javascript使用prototype.__proto__实现继承,简洁0污染

由于个人博客的服务器提供商最近打算关闭服务,无奈只能考虑将部分认为有价值的东西转移到简书这边过来,搞过一次个人博客就不太想再搞第二次了。
以下的方式实现的Javascript继承非常简单使用。javascript中一切都是对象,每个对象都是基于原型对象创建的,每个对象中都有proto属性,这个属性指向的就是它基于的原型对象。

var Parent = function () {
    this.name = 'parent';
};
Parent.prototype.sayName = function () {
    alert(this.name);
};
var Son = function () {
    Parent.apply(this, arguments);
    this.name = 'son';
};
Son.prototype.__proto__ = Parent.prototype;
Son.prototype.sayName = function() {
    alert('My name is:' + this.name);
};
var parent = new Parent();
var son = new Son();
parent.sayName();
son.sayName();
console.log(
    Parent.__proto__ === Function.prototype,
    parent.__proto__ === Parent.prototype,
    parent.constructor === Parent,
    Son.__proto__ === Function.prototype,
    son.__proto__ === Son.prototype,
    son.constructor === Son
);

参考了两篇文章实现的:
http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html
http://blogzhoubo.iteye.com/blog/1685368

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,328评论 25 709
  • 我们在对象创建模式中讨论过,对象创建的模式就是定义对象模板的方式。有了模板以后,我们就可以轻松地创建多个结构相同的...
    csRyan阅读 997评论 0 7
  • 近些年来,关于幼儿安全事故新闻层出不穷,并引发了一系列的悲剧。在这种社会环境下,幼儿安全问题逐渐成为社会关注的...
    冰柠Li阅读 1,836评论 0 2
  • 初临崔寒柏手书
    和为贵0608阅读 263评论 1 2
  • 《大学肆年》目录 三座城池已经攻取两座,就差35号楼还没有消息。蒋学文给唐英打去电话问前线的战况如何,唐英正和那阿...
    帝恶道阅读 592评论 0 3

友情链接更多精彩内容