博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript实现继承的几种主要方法
阅读量:5891 次
发布时间:2019-06-19

本文共 2962 字,大约阅读时间需要 9 分钟。

//1.原型链继承                var supClass = function(name, sex) {                    this.name = name || 'red'                    this.sex = sex || 'good'                    this.father = 'father'                    this.say = function() {                        console.log(this.name)                    }                }                supClass.prototype = {                    sayHi() {                        console.log(this.name + ' hi')                    }                }                                /*var sonClass = function(name, sex) {                    this.name = name                    this.sex = sex                }                console.log(sonClass.prototype)                sonClass.prototype = new supClass()      //核心代码                sonClass.prototype.constructor = sonClass//核心代码                                var son1 = new sonClass('red', 's')                son1.say()*/            //优点: 简单,容易实现            //缺点: 多拷贝了一份supClass的属性过来,并且supClass的方法每生成一个新的            //        sonClass就要再重新拷贝一份,造成了不必要的浪费                                    //2.构造函数继承                /*var sonClass = function(name, sex, type) {                    supClass.call(this)                    this.type = type                    this.sex = sex                    this.name = name                }                                var son1 = new sonClass('jay', 'man', 'goodman')                son1.say()*/            //优点: 简单,容易实现,可以同时继承多个父对象(三姓家奴)            //缺点: 只能继承定义在父元素上的属性或方法,而对于父元素原型对象上的属性或方法            //则无法继承                        //3.混合继承                /*var sonClass = function(name, sex, type) {                    supClass.call(this)                    this.type = type                    this.sex = sex                    this.name = name                }                sonClass.prototype = new supClass()                sonClass.prototype.constructor = sonClass                                var son1 = new sonClass('jay', 'man', 'goodman')                son1.say()                son1.sayHi()*/            //优点: 几乎完美            //缺点: 实现复杂,使用原型继承的部分仍然没有解决会多拷贝一份父类属性从而造成            //不必要的空间浪费的问题(可以在sonClass的prototype中看到被屏蔽的继承自父类的属性)                        //4.寄生组合式继承                //使用工厂函数将父元素的原型剥离出来单独赋值给子元素的原型                function birth(f, s) {                    var prototype = Object(f.prototype)                    s.prototype = prototype                    s.prototype.constructor = s                }                                //组合式继承                                /*var sonClass = function(name, sex, type) {                    supClass.call(this)                    this.type = type                    this.sex = sex                    this.name = name                }                birth(supClass, sonClass)                                var son1 = new sonClass('jay', 'man', 'goodman')                son1.say()                son1.sayHi()*/                                //优点: 完美                //缺点: 实现困难

转载地址:http://gafsx.baihongyu.com/

你可能感兴趣的文章
asp.net开源CMS推荐
查看>>
我所思考的生活,致半年后的自己
查看>>
csharp skype send message in winform
查看>>
jQuery plugin: Tablesorter 2.0
查看>>
csharp:datagridview enter Half Width and Full Width characters
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
查看>>
[转]GetLastInputInfo计时用户离开电脑及软件在指定时间锁定等
查看>>
Windows 操作系统与 .NET Framework
查看>>
Box2dの自定义多边形
查看>>
HDU 1425 ( sort )
查看>>
Windows Phone 7 框架和页面
查看>>
Directx11教程(31) 纹理映射(1)
查看>>
Android——Button的颜色
查看>>
《星辰傀儡线》人物续:“灭世者”、“疯狂者”、“叛逆者”三兄妹
查看>>
安装系统字体
查看>>
Spring的ApplicationContext加载备忘
查看>>
GoogleMapAPIV3.8.6离线包下载
查看>>
SILK 的 Tilt的意思
查看>>
Html学习笔记3
查看>>