前端面试宝典---原型链

引言----感谢大佬的讲解

大佬链接

原型链示意图

原型链问题中需要记住一句话:一切变量和函数都可以并且只能通过__proto__去找它所在原型链上的属性与方法

原型链需要注意的点

看上图可以发现

  1. 函数(构造函数)也可以通过__proto__去找到原型对象也就是Function.prototype
  2. Function.__proto__ === Function.prototype

练习题

typescript 复制代码
function Test(name, age){
    this.name = name
    this.age = age
}
var obj = new Test('Jack', 26)
 
Object.prototype.price = 2000
 
Function.prototype.price = 300
 
console.log(Test.price) // 300
console.log(obj.price) // 2000

原型链继承的方式

typescript 复制代码
function Person (name, age) {
  this.name = name
  this.age = age
}

// person的子类
function Student (name, age, score) {
  Person.call(this, name, age)
  this.score = score
}
// 1. 根据原型创建一个空对象
Student.prototype = Object.create(Person.prototype) // Object.create(Person.prototype)创建的对象是一个以Person.prototype为原型的对象
// 2. 修改Student的prototype的constructor
Student.prototype.constructor = Student // 继承
// 3.更新tostring方法
Student.prototype[Symbol.toStringTag] = Student.name

let s1 = new Student('wangwu', 18, 100)
console.log('s1.__proto__', s1.__proto__)
console.log('s1.__proto__.__proto__', s1.__proto__.__proto__)
console.log('Person.prototype', Person.prototype)
console.log('Object.prototype.toString.call(s1)', Object.prototype.toString.call(s1));
相关推荐
林小帅1 小时前
【笔记】OpenClaw 架构浅析
前端·agent
林小帅2 小时前
【笔记】OpenClaw 生态系统的多语言实现对比分析
前端·agent
程序猿的程2 小时前
开源一个 React 股票 K 线图组件,传个股票代码就能画图
前端·javascript
不爱说话郭德纲3 小时前
告别漫长的HbuilderX云打包排队!uni-app x 安卓本地打包保姆级教程(附白屏、包体积过大排坑指南)
android·前端·uni-app
大雨还洅下3 小时前
前端JS: 虚拟dom是什么? 原理? 优缺点?
javascript
唐叔在学习3 小时前
[前端特效] 左滑显示按钮的实现介绍
前端·javascript
用户5282290301803 小时前
【学习笔记】ECMAScript 词法环境全解析
前端
青青家的小灰灰3 小时前
React 架构进阶:自定义 Hooks 的高级设计模式与最佳实践
前端·react.js·前端框架
Angelial3 小时前
Vite 性能瓶颈排查标准流程
前端
不要秃头啊3 小时前
别再谈提效了:AI 时代的开发范式本质变了
前端·后端·程序员