学习笔记 JavaScript ES6 ES5中的类与继承

学习内容:

  • 类的定义
  • 静态属性和方法的定义
  • 类的继承

类的定义方法

其实ES中是没有类的概念的,但可以用function去模拟一个类。

属性定义在构造方法里,方法定义在原型里。

function Fruit(name) {
    this.name = name
}

类中的方法不要直接写在function当中,应该写在类的原型下面:

function Fruit(name) {
    this.name = name
}

Fruit.prototype.showname = function() {
    ...
}

静态方法和静态属性的定义方法

直接在类的后面写属性名和方法名就可以。

Fruit.price = 0
Fruit.getPrice = function() {
    ...
}

定义好之后,不需要new,直接调用即可。

类的继承

下面的例子可以看到,通过构造函数方法实现继承,只是继承父类的属性,父类的方法是无法继承的。

// 父类
function Animal(name) {
    this.name = name
}

Animal.prototype.showname = function () {
    console.log('name is : ' + this.name)
}

// 构造函数继承
// 子类
function Dog(name, age) {
    Animal.call(this, name) // 继承属性
    this.age = age
}

let dog1  = new Dog('yiyi','white')
console.log(dog1)
dog1.showname()

-------------------------------------------------------------------
Dog {name: 'yiyi', age: 'white'} // 继承属性可以
Uncaught TypeError: dog1.showname is not a function // 继承方法不可以

在上面程序的基础上增加原型继承,使用构造函数继承+原型继承的组合式继承实现继承父类的属性和方法:

// 父类
function Animal(name) {
    this.name = name
}

Animal.prototype.showname = function () {
    console.log('name is : ' + this.name)
}

// 构造函数集成
// 子类
function Dog(name, age) {
    Animal.call(this, name) // 继承属性
    this.age = age
}

Dog.prototype = new Animal()
Dog.prototype.constructor = Dog

let dog1  = new Dog('yiyi','1')
console.log(dog1)
dog1.showname()

// ---------------------------------------------------
// Dog {name: 'yiyi', age: '1'}
// 2-9.js?d238:7 name is : yiyi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值