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();
相关推荐
star _chen15 分钟前
C++ std::move()详解:从小白到高手
开发语言·c++
lzhdim20 分钟前
C#开发者必知的100个黑科技(前50)!从主构造函数到源生成器全面掌握
开发语言·科技·c#
刺客xs29 分钟前
Qt----事件简述
开发语言·qt
程序员-King.32 分钟前
【Qt开源项目】— ModbusScope-进度规划
开发语言·qt
前端一小卒37 分钟前
一个看似“送分”的需求为何翻车?——前端状态机实战指南
前端·javascript·面试
syt_101341 分钟前
Object.defineProperty和Proxy实现拦截的区别
开发语言·前端·javascript
liu****41 分钟前
Python 基础语法(二):程序流程控制
开发语言·python·python基础
charlie11451419142 分钟前
如何快速在 VS2026 上使用 C++ 模块 — 完整上手指南
开发语言·c++·笔记·学习·现代c++
时空无限1 小时前
Java Buildpack Reference
java·开发语言
长安牧笛1 小时前
儿童屏幕时间管控学习引导系统,核心功能,绑定设备,设时长与时段,识别娱乐,APP超时锁屏,推荐益智内容,生成使用报告,学习达标解锁娱乐
javascript