08JavaScript核心:原型编程范式与面向对象

1.JavaScript 中的”类“

2.理解原型和原型链

1.JavaScript 中的”类“

class Dog {
  constructor(name ,age) {
   this.name = name
   this.age = age
  }
  
  eat() {
    console.log('肉骨头真好吃')
  }
}

其实完全等价于写了这么一个构造函数:

function Dog(name, age) {
  this.name = name
  this.age = age
}
Dog.prototype.eat = function() {
  console.log('肉骨头真好吃')
}

2.理解原型和原型链

2-1 原型
  1. 每个构造函数都拥有一个prototype属性,它指向构造函数的原型对象。
  2. 这个原型对象由一个constructor属性,它指向构造函数。
  3. 每个实例都有一个**proto属性,当我们使用构造函数去创建实例时,实例的proto**属性就指向构造函数的原型对象。
// 创建一个Dog构造函数
function Dog(name, age) {
  this.name = name
  this.age = age
}
Dog.prototype.eat = function() {
  console.log('肉骨头真好吃')
}
// 使用Dog构造函数创建dog实例
const dog = new Dog('旺财', 3)

在这里插入图片描述

// 输出"肉骨头真好吃"
dog.eat()
// 输出"[object Object]"
dog.toString()

在dog实例中没有手动定义eat()和toString(),但是还是成功被调用了,这是因为当我们视图访问一个JavaScript的属性/方法时,它先搜索这个实例本身,如果没有就去搜索实例的原型对象,如果还没有就去搜索原型对象的原型对象。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值