前端 js 经典:原型对象和原型链

简介: 前端 js 经典:原型对象和原型链

1. 原型对象和构造函数纠缠不清的一生

// prototype 函数类型的数据,都有一个叫做 prototype 的属性。
// 这个属性指向的是一个对象,就是所谓的原型对象。
function fn() {}
fn.prototype; // { constructor: f } 这个就是原型对象
 
// constructor 属性指向它的构造函数
fn == fn.prototype.constructor; // true

2. 原型对象的作用

最主要的作用就是用来存放实例对象的公有属性和方法,不然每次创建实例,相同的属性和方法都会重复创建,浪费内存。

function Person(name, age) {
  this.name = name;
  this.age = age;
}
 
Person.prototype.type = "people";
Person.prototype.say = function () {
  console.log("呀食勒没啊");
};
 
// 实例对象在自己这找不到对应的属性和方法,就会去构造函数的原型对象找。
// 如果有,就返回。如果没有,就会沿着__proto__继续往父级找,直到为null为止
let yqcoder = new Person("yqcoder", 18);
yqcoder.type; // people
yqcoder.say(); // 呀食勒没啊
yqcoder.constructor; // 查看对象的构造函数 Person() {}

3. 原型链

// prototype 显示原型,这是函数类型数据的属性,指向原型对象
// __proto__ 隐式原型,这是对象类型数据的属性,指向原型对象
Person.prototype == yqcoder.__proto__; // true
 
// 实例对象如果顺着__proto__属性一直往父级的原型对象找,都没找到就返回undefined。
// yqcoder.__proto__.__proto__.__proto__ 这种结构就叫原型链,也叫隐式原型链。
// 它的终点就是Object.prototype指向的原型对象,下一个__proto__就为null了
yqcoder.love; // undefined

4. 万物皆对象

// 函数也是对象,那么函数也有__proto__指向原型对象。
// 原型对象里的constructor指向构造函数Function
Person.__proto__ == Function.prototype; // true

5. 总结

术的尽头,气体源流

原型的尽头,Object.prototype


目录
相关文章
|
4天前
|
缓存 前端开发 JavaScript
基于JavaScript的前端性能优化技术探讨
基于JavaScript的前端性能优化技术探讨
18 1
|
7天前
|
JavaScript 前端开发 Java
前端知识点03(JS)
前端知识点概览:了解JS中的this指向,包括全局、函数、new、apply/call/bind及箭头函数的规则。理解script的async和defer属性对脚本加载和执行的影响。探讨setTimeout和setInterval的用法及其在性能上的考量。ES6与ES5的区别在于新语法特性,如let/const、箭头函数、模板字符串、模块化、类和继承等。此外,ES6还引入了Symbol、解构赋值、默认参数、Map/Set和Generator等功能。别忘了点赞和支持作者哦!
17 1
|
7天前
|
JavaScript 前端开发
前端面试02(JS)
本文是前端面试系列的第二篇,主要涵盖了JavaScript的基础知识,包括JS的组成(ECMAScript、DOM、BOM)、内置对象(如String、Array、Math、Date等)、数组操作方法、数据类型检测方法(typeof、instanceof、constructor、Object.prototype.toString.call)、闭包的概念及其特点、前端内存泄漏的原因和类型、事件委托的优势、基本数据类型与引用数据类型的差异、原型链的工作原理以及JS实现继承的多种方式(原型链、构造函数、组合继承等)。文章结尾鼓励读者点赞和支持作者。
9 1
|
8天前
|
JavaScript 前端开发 NoSQL
构建基于Node.js的全栈应用:从前端到后端的完整指南
【5月更文挑战第24天】本文是关于使用Node.js构建全栈应用的指南,涵盖前端(React或Vue)、后端(Node.js + Express)和数据库(MongoDB)的选型与实现。文章介绍了项目结构、前端组件化开发、后端API接口编写、前后端联调及部署上线的注意事项,帮助读者掌握全栈开发流程。
|
10天前
|
移动开发 JavaScript 前端开发
【热门话题】Vue.js:现代前端开发的轻量级框架之旅
Vue.js,由尤雨溪于2014年创建,是一个轻量级的前端框架,因其简洁API、高效渲染和组件系统深受全球开发者喜爱。本文探讨Vue的核心理念、技术架构、开发实践及在现代Web开发中的应用。Vue遵循渐进式框架思想,提供声明式编程、组件化和响应式数据绑定。技术上,它采用双向数据绑定、虚拟DOM和生命周期钩子。开发实践中,Vue CLI和Vuex、Vue Router分别加速开发和管理状态、路由。Vue不仅适用于单页应用,还支持多页应用、移动开发和跨平台项目,拥有丰富的社区生态和插件。随着Vue 3的推出,Vue将持续创新并影响前端开发领域。
32 0
|
17天前
|
Web App开发 缓存 前端开发
前端性能优化的整理笔记(一)
前端性能优化的整理笔记(一)
110 0
|
15天前
|
移动开发 前端开发 JavaScript
10款精美的web前端源码的特效,2024年最新面试题+笔记+项目实战
10款精美的web前端源码的特效,2024年最新面试题+笔记+项目实战
|
17天前
|
存储 前端开发 JavaScript
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
45 1
|
17天前
|
XML 编解码 前端开发
css设计文本样式 前端开发入门笔记(十二)
css设计文本样式 前端开发入门笔记(十二)
12 0
|
17天前
|
Web App开发 XML 前端开发
CSS中的非布局样式+CSS布局 前端开发入门笔记(十一)
CSS中的非布局样式+CSS布局 前端开发入门笔记(十一)
38 0