关于js oop,继承实现的5、6、7、8种方法中的最佳方法

来源:互联网 发布:无线hdmi 知乎 2017 编辑:程序博客网 时间:2024/06/06 00:56

原文地址:http://www.cnblogs.com/ayqy/p/4471638.html


特别同意作者前面说的话

一直不喜欢JS的OOP,在学习阶段好像也用不到,总觉得JS的OOP不伦不类的,可能是因为先接触了Java,所以对JS的OO部分有些抵触。

而且我是相当抵触,因为我也是看了好多关于js继承的文章博客,看了那5、6、7、8种继承方式,而且看得稀里糊涂,总结就是:乱。


记录下作者说的最佳的方式,别的方式也懒得记了

寄生组合继承(最佳方式)


function beget(obj){   // 生孩子函数 beget:龙beget龙,凤beget凤。    var F = function(){};    F.prototype = obj;    return new F();}function Super(){    // 只在此处声明基本属性和引用属性    this.val = 1;    this.arr = [1];}//  在此处声明函数Super.prototype.fun1 = function(){};Super.prototype.fun2 = function(){};//Super.prototype.fun3...function Sub(){    Super.call(this);   // 核心    // ...}var proto = beget(Super.prototype); // 核心proto.constructor = Sub;            // 核心Sub.prototype = proto;              // 核心 var sub = new Sub();alert(sub.val);alert(sub.arr);

原创粉丝点击