ES5的继承
程序员文章站
2022-07-15 20:38:14
...
首先最基本的类:
可以在构造函数和原型链里添加方法,静态方法可以通过类名调用。
//构造函数中增加属性和方法
function Person(){
this.name = "fur"
this.age = 1
this.play = function(){
console.log(this.name+"在玩")
}
}
//原型链上增加属性和方法
Person.prototype.sex = "girl"
Person.prototype.study = function(){
console.log(this.name+"在学习")
}
//静态方法
Person.init = function(){
console.log("静态方法")
}
Person.init()//静态方法
var p = new Person;
console.log(p.name)//fur
console.log(p.sex)//girl
p.play()//fur在玩
p.study()//fur在学习
对上面的函数进行继承:
第一种:对象冒充实现继承
好处:可以继承构造函数的属性和方法
弊端:无法继承原型链上的属性和方法
function Man(){
Person.call(this)
}
var m = new Man()
m.play()//fur在玩
//m.study() 报错
第二种:原型链实现继承
好处:可以继承构造函数和原型链的属性和方法
弊端:实例化子类的时候没法给父类传参(见下面一个例子)
function Man(){
}
Man.prototype = new Person()
var m = new Man()
m.play() //fur在玩
m.study() //fur在学习
实例化子类的时候没法给父类传参的例子:
function Person(name,age){
this.name = name
this.play = function(){
console.log(this.name+"在玩")
}
}
//原型链上增加属性和方法
Person.prototype.study = function(){
console.log(this.name+"在学习")
}
//原型链实现继承
function Man(){
}
Man.prototype = new Person()
var m = new Man("fur",1)
m.play()//undefined在玩
m.study()//undefined在学习
第三种:原型链+对象冒充的组合继承模式
第一种写法:Man.prototype = new Person()
即 子.prototype = new 父()
第二种写法:Man.prototype = Person.prototype
即 子.prototype = 父.prototype
//构造函数中增加属性和方法
function Person(name,age){
this.name = name
this.age = age
this.play = function(){
console.log(this.name+"在玩")
}
}
//原型链上增加属性和方法
Person.prototype.sex = "girl"
Person.prototype.study = function(){
console.log(this.name+"在学习")
}
//原型链实现继承
function Man(name,age){
Person.call(this,name,age)
}
//第一种
Man.prototype = new Person()
//第二种
//Man.prototype = Person.prototype
var m = new Man("fur",1)
m.play()//fur在玩
m.study()//fur在学习
上一篇: es5继承
下一篇: (源码分析)HashSet源码分析
推荐阅读
-
一张图看懂小米移动电源1代高配版、套装版与2代的区别
-
使用IDEA创建Web项目并发布到tomcat的操作方法
-
12组nodes MySQL DB,每组2台Master-Master,批量清除过期的binl_MySQL
-
深入PHP5中的魔术方法详解
-
物品掉落概率表的设计模式有关问题
-
微信小程序实战–集阅读与电影于一体的小程序项目(七)
-
PHP使用NuSOAP调用Web服务的方法,phpnusoap调用web
-
AE CS6怎么设置文字倾斜角度? ae倾斜字体的制作技巧
-
Js中setTimeout()和setInterval() 何时被调用执行的用法_基础知识
-
PHP函数header()查询单部件的具体方法解析