Object.create的原型继承

● 首先我们来从这种方法来创建一个和之前一样计算年龄的方法

javascript 复制代码
const PersonProto = {
  cacleAge() {
    console.log(2038 - birthYear);
  }
};

const zhangsan = Object.create(PersonProto);
console.log(zhangsan);

● 发现确实可以实现原型继承的特性

javascript 复制代码
const PersonProto = {
  cacleAge() {
    console.log(2038 - this.birthYear);
  }
};

const zhangsan = Object.create(PersonProto);
console.log(zhangsan);
zhangsan.name = 'ZhangSan';
zhangsan.birthYear = 2002;
zhangsan.cacleAge();

总结

● 使用 Object.create 创建对象时,新对象会直接链接到指定的原型对象。这意味着新对象可以访问原型对象上的属性和方法。

● 但是构造函数是 JavaScript 中另一种实现对象创建和继承的方法。通常,我们会定义一个函数,并使用 new 操作符来创建实例。

● Object.create 是一种更为简洁和直接的原型继承方式,适合创建新对象并链接已有对象的情况。而造函数则是传统的面向对象编程方式,适合需要初始化多个实例和实现复杂继承关系的场景。

验证

javascript 复制代码
console.log(zhangsan.__proto__ == PersonProto);

● 最上面那种给对象传参数的方法看上去有点蠢,我们也可以向下面这样去写

javascript 复制代码
const PersonProto = {
  cacleAge() {
    console.log(2038 - this.birthYear);
  },
  init(firstName, birthYear) {
    this.firstName = firstName;
    this.birthYear = birthYear;
  }
};
const lisi = Object.create(PersonProto);
lisi.init('lisi', 1998);
lisi.cacleAge();
相关推荐
华洛29 分钟前
《从0到1打造企业级AI售前机器人——实战指南五:处理用户意图的细节实现!》
javascript·vue.js·node.js
江城开朗的豌豆1 小时前
🔥 Vue组件传值:小杨教你玩转父子组件通信
前端·javascript·面试
江城开朗的豌豆1 小时前
Vue组件花式聊天指南:6种传值妙招,总有一款适合你
前端·javascript·vue.js
黑土豆1 小时前
在Vue3项目中实现PDF文件解析与预览的完整实践
前端·javascript·vue.js
han_1 小时前
前端如何动态执行JavaScript代码?
前端·javascript
10年前端老司机4 小时前
10道js经典面试题助你找到好工作
前端·javascript
codingandsleeping9 小时前
重读《你不知道的JavaScript》(上)- 作用域和闭包
前端·javascript
前端风云志11 小时前
TypeScript实用类型之Omit
javascript
烛阴11 小时前
Puppeteer入门指南:掌控浏览器,开启自动化新时代
前端·javascript
芝士加13 小时前
Playwright vs MidScene:自动化工具“双雄”谁更适合你?
前端·javascript