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();
相关推荐
疯狂打码的少年8 小时前
【软件工程】结构化设计:模块独立性与耦合内聚
java·开发语言·笔记·软件工程
鹿目8 小时前
使用 Vant CLI 搭建 UI 组件库:从 H5 到小程序跨平台
前端·javascript
默_笙8 小时前
😭 我花了两小时找了一个数据结构 bug,才把"迷你 Cursor"跑起来,绝望(bushi)
前端·javascript
程高兴8 小时前
PMSM基于在线转动惯量辩识的滑模负载转矩观测器MATLAB-SIMULINK仿真模型
开发语言·matlab
竹林8188 小时前
wagmi v2 监听合约事件踩坑记:从 `useContractEvent` 到 `watchContractEvent`,我重构了三版才搞定实时数据流
前端·javascript
kisloy9 小时前
【python零基础教程第24讲】代码规范与质量管控
开发语言·python
C++、Java和Python的菜鸟9 小时前
第4章 后端Web基础(基础知识)
java·开发语言
芷栀夏9 小时前
Java教育平台实战复盘:课程、考试与学习行为分析系统设计
java·开发语言·学习
从零开始的代码生活_9 小时前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法
xywww1689 小时前
AWS 账号权限怎么分:根用户和 IAM 用户区别及日常使用建议
大数据·开发语言·人工智能·python·gpt·云计算·aws