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

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

大佬链接

原型链示意图

原型链问题中需要记住一句话:一切变量和函数都可以并且只能通过__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));
相关推荐
LEE8 小时前
前端转型全栈 03:接口失败也返回 200,OpenAPI 契约与错误码怎么定
前端·后端·全栈
我命由我123459 小时前
CSS - CSS 媒体查询 orientation
前端·javascript·css·html·css3·html5·js
lichenyang4539 小时前
让 VK 小程序调用 HarmonyOS 原生能力:一次跨端 Bridge SDK 的设计与实践
前端
阳光宅男@李光熠9 小时前
【电子通识】一起学习TDK的EMC基础——电池兼容设计方法概述
java·前端·数据库
南雨北斗10 小时前
vue3项目中的env.d.ts文件
前端
烈风逍遥10 小时前
第五篇:通用 LLM 流式对话:前后端联接的完整实现
前端·后端·架构
aixingpan10 小时前
aixingpan.cn API开发文档:api_docs_trichart_natal_progression_sec_transit2接口指南
前端·php
江华森10 小时前
Web 安全实战:验证机制、会话管理、SQL 注入、XSS 与 CSRF
前端
江华森10 小时前
HTTPS 实战:TLS 握手成本、自制 CA 与证书、三大常见故障
前端
江华森10 小时前
HTTP 再邂逅:报文结构、请求方法、状态码与 Cookie/Session
前端