劣者初接触javascript的时候,觉得这玩意好奇葩啊。连个类都没有。只因劣者原先用c#习惯了。Javascript是动态的,本身不提供类的实现。(在ES2015/ES6中引入了class关键字,但只是语法糖,JavaScript 仍然是基于原型的)。
什么是原型?原型是一个对象,其他对象可以通过它实现属性继承。任何对象都可以是原型。任何对象在被创建之后也都会有一个默认原型,除了最顶端的那个原型。Javascript中最顶端的那个原型就是“Object”。而这样金字塔式的结构就称为原型链。 JavaScript中几乎所有的对象都是位于原型链顶端的Object的实例。
我们通过一个实例来演示一下原型链。
这里可以看到,先创建的对象a继承了Object,后创建的对象b继承了对象a。整个原型链是这样的:b--->a--->Object,Object后面就是null了,因为啥也找不到。
JavaScript 并没有其他基于类的语言所定义的“方法”。在 JavaScript 里,任何函数都可以添加到对象上作为对象的属性。函数的继承与其他的属性继承没有差别,当继承的函数被调用时,this 指向的是当前继承的对象,而不是继承的函数所在的原型对象。如果对象和原型都包含一个名叫add的方法,那么会调用当前对象的add方法,这叫“属性覆盖”(这种情况相当于其他语言的方法重写)。我们来看一个实例。
特别说明:
1. 数组都继承于Array.prototype(indexOf,forEach等方法都是从它继承而来)
2. 函数都继承于Function.prototype(call,bind等方法都是从它继承而来)
那么怎么来扩展一个原型呢,新增一个方法对象什么的,请看实例。
在原型链上查找属性比较耗时,对性能有副作用,这在性能要求苛刻的情况下很重要。另外,试图访问不存在的属性时会遍历整个原型链。
遍历对象的属性时,原型链上的每个可枚举属性都会被枚举出来。
检测对象的属性是定义在自身上还是在原型链上,有必要使用 hasOwnProperty 方法,所有继承自 Object.proptotype 的对象都包含这个方法。
是 JavaScript 中唯一一个只涉及对象自身属性而不会遍历原型链的方法。
So:在用原型继承编写复杂代码前理解原型继承模型十分重要。同时,还要清楚代码中原型链的长度,并在必要时结束原型链,以避免可能存在的性能问题。此外,除非为了兼容新 JavaScript 特性,否则,永远不要扩展原生的对象原型。
每天学习一点,进步一点,坚持一个月将会是一个质的的飞跃,俗话说三个臭皮匠顶一个诸葛亮,大家的智慧总是大于一个人的智慧,想要比自己牛的人交流学习,欢迎进群:675498134
相关推荐
1. **原型和原型链**:理解JavaScript的面向对象特性,原型是创建对象的模板,而原型链则决定了属性的查找路径,这是JavaScript继承机制的基础。 2. **闭包**:闭包是JavaScript中的一个重要特性,它允许函数访问并...
"零基础如何快速学好web前端.txt"和"web前端学习必看资料.txt"这两份文档很可能是提供学习策略和资源的指南,包含了学习路径建议、参考资料和练习项目,对于初学者来说是非常宝贵的指导。 为了更好地学习,你需要...
JavaScript,简称JS,是Web开发中的关键组成部分,主要用于前端交互逻辑和动态效果的实现。学习JavaScript需要明确其定位,它是负责操纵和调整DOM(文档对象模型),以改变网页内容和行为的核心技术。以下是一些循序...
javascript基础知识思维导图,js入门必备,学好ES5才能去学ES6,请不要本末倒置。ES5是基础、ES6其实是ES5的技术补充,弥补ES5长久以来的一些痛点,增加语法糖。ES6思维导图,后续更新。
零基础如何学好web前端开发.pdf
基本运算是数学运算的基础,例如矩阵的初等变换是线性代数的重要内容之一。求逆方阵、求矩阵的秩,解线性方程组等都离不开矩阵的初等变换。 应用 应用是数学的最终目标,要学会应用数学解决实际问题的能力,例如...
"想学好电脑的必看--电脑知识精华"是一个专门针对电脑基础知识和进阶技能的学习资源,旨在帮助用户全面理解并掌握电脑的相关知识。 首先,基础篇涵盖的内容包括操作系统原理,主要讲解Windows、Mac OS以及Linux等...
一个HTML+CSS+JS开发的动态页面,适合前端初学者
JavaScript,简称JS,是一种广泛应用于Web开发的轻量级、解释型编程语言,以其灵活性和易用性在前端和后端开发中占据了重要的地位。它主要用于网页和网络应用的交互,实现动态效果、数据验证、页面操作等功能。下面...
在 Web 前端开发方向实习中,学好基础知识是必不可少的。基础知识包括 HTML、CSS、JavaScript 等。 HTML 需要掌握尽可能多的标签,包括经常使用的标签和不常用的标签。CSS 需要掌握对各个属性以及一些属性之间结合...
分享最新的web前端学习线路图里面包含了全部的知识点,另外还有配套视频教程,希望大家能学好web前端。
"学好C从零基础开始"这套资料显然是为了帮助初学者掌握C语言的基础知识而设计的。 在C语言的学习中,首先会接触到的是基础的语法结构,包括数据类型(如整型、浮点型、字符型等)、变量的声明与赋值、运算符的使用...
学好语文五要素,是确保小学生扎实掌握语文基础知识的关键。下面将详细解析这五个方面: 首先,专心听讲是学好语文的第一步。在课堂上,学生需要全神贯注地聆听老师的讲解,抓住每一句话的要点。遇到不理解的内容,...
要学好C++,基础至关重要,因为它的语法严谨,概念深入,对逻辑思维的要求较高。本资源是专为C++初学者准备的,包含了“章节练习题”,旨在帮助学习者巩固每个阶段的学习成果,逐步建立起坚实的C++基础。 1. **基本...
JavaScript 参考教程 本教程为未接触过 JavaScript 的读者提供了比较完善的初级...未接触过 JavaScript 的读者看完此教程应该对 JavaScript 有比较深的 掌握。 接触过 JavaScript 的读者可以当此教程为参考来用…………
零基础入门怎样学好云计算编程技术基础.pdf
"学好C语言必看的九百例"是一份集合了大量C语言编程实例的资源,旨在帮助学习者通过实践来提升技能。这份资料包含的900个实例覆盖了C语言的各个核心概念,从基本的数据类型、控制结构,到复杂的函数、指针、内存管理...
零基础入门怎样学好云计算编程技术基础(1).pdf
要学好性能测试,需要掌握一系列的知识和技能。以下是一些关键领域的详细说明: 1. **基础理论**:首先,你需要了解性能测试的基本概念,如吞吐量、响应时间、并发用户数等。这些指标用于衡量系统在不同负载下的...