当前位置: 首页 > news >正文

Object.create的原型继承

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

const PersonProto = {cacleAge() {console.log(2038 - birthYear);}
};const zhangsan = Object.create(PersonProto);
console.log(zhangsan);

在这里插入图片描述

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

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

验证

console.log(zhangsan.__proto__ == PersonProto);

在这里插入图片描述

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

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();

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [笔记] hyperf event
  • Html中嵌入module类型的JavaScript代码,如何访问其中的函数或变量?
  • 数论之高斯消元
  • Spring父子容器
  • 文心快码 Baidu Comate 前端工程师观点分享:以文心快码 Baidu Comate为例,智能代码助手需要什么(三)
  • 神经重建在自动驾驶模拟中的应用
  • CSS盒子模型(三)
  • 解读“酒过三巡,菜过五味”:三巡是多长时间?五味是哪五味?
  • ProtoBuf简要介绍与快速上手使用(C++版)
  • 回调函数的使用
  • 【STM32】看门狗
  • 【Apache Doris】周FAQ集锦:第 19 期
  • pytest自定义命令行选项
  • ML307R_APP_DEMO_SDK TCP/UDP使用介绍
  • 【vue】编辑器段落对应材料同步滚动交互
  • 【附node操作实例】redis简明入门系列—字符串类型
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • github指令
  • HTTP中GET与POST的区别 99%的错误认识
  • JAVA之继承和多态
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux Process Manage
  • Linux下的乱码问题
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Puppeteer:浏览器控制器
  • Python爬虫--- 1.3 BS4库的解析器
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Spring Boot快速入门(一):Hello Spring Boot
  • text-decoration与color属性
  • Tornado学习笔记(1)
  • vue-loader 源码解析系列之 selector
  • windows下mongoDB的环境配置
  • 多线程 start 和 run 方法到底有什么区别?
  • 排序算法学习笔记
  • 排序算法之--选择排序
  • 前端之Sass/Scss实战笔记
  • 少走弯路,给Java 1~5 年程序员的建议
  • 手写双向链表LinkedList的几个常用功能
  • 智能合约开发环境搭建及Hello World合约
  • Spring Batch JSON 支持
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • !!java web学习笔记(一到五)
  • ### RabbitMQ五种工作模式:
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (2)(2.10) LTM telemetry
  • (2)空速传感器
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (四)图像的%2线性拉伸
  • (转) Face-Resources