首页 > 编程语言 >【JavaScript系列】原型继承和原型链

【JavaScript系列】原型继承和原型链

时间:2024-08-23 16:05:01浏览次数:7  
标签:__ ItShare 继承 JavaScript Person 对象 原型 prototype

原创 IT知识一享

原型继承

在 JavaScript 中,每个函数都有一个特殊的属性叫做 prototype(原型)。当你用 new 关键字来创建一个对象实例时,这个实例会自动关联到构造函数的 prototype 上。

const Person = function(firstName, birthYear) {
  this.firstName = firstName;
  this.birthYear = birthYear;
};

通过 new Person('IT知识一享', 2024) 创建了一个 ItShare 对象实例。这个实例 ItShare 会有一个隐藏属性 __proto__,它指向 Person.prototype,即 Person 函数的原型对象。

原型链

原型链是一种机制,允许对象通过它们的原型链查找和继承属性和方法。如果在一个对象上访问属性或方法时,对象本身没有定义,JavaScript 引擎会沿着这个对象的 __proto__(即它的构造函数的 prototype)向上查找,直到找到对应的属性或方法或者到达原型链的顶端(即 Object.prototype)。

【eg】

console.log(ItShare instanceof Person); 

true,原因是ItShare 是 Person 的实例;

ItShare.CalcAge(); /

输出 75,通过原型继承,ItShare 实例可以访问到 Person.prototype 上的 CalcAge 方法

.__proto__ === Person.prototype); // true,ItShare 的 __proto__ 指向 Person.prototype

console.log(Person.prototype.isPrototypeOf(ItShare)); // true,Person.prototype 是 ItShare 的原型

console.log(Person.prototype.isPrototypeOf(Person)); // false,Person.prototype 不是 Person 函数自身的原型对象

重点理解

原型对象:每个函数在创建时都有一个 prototype 属性,它指向一个对象,这个对象包含函数的默认属性和方法。

实例的原型:通过 new 关键字创建对象实例时,实例会有一个 __proto__ 属性,指向构造函数的 prototype。

原型链:通过原型链,对象可以访问其构造函数的原型对象上定义的属性和方法。

isPrototypeOf 方法:用于检查一个对象的原型链中是否包含另一个对象的原型。

标签:__,ItShare,继承,JavaScript,Person,对象,原型,prototype
From: https://www.cnblogs.com/o-O-oO/p/18376025

相关文章

  • 01JavaScript
    JavaScript基础-第1天了解变量、数据类型、运算符等基础概念,能够实现数据类型的转换,结合四则运算体会如何编程。体会现实世界中的事物与计算机的关系理解什么是数据并知道数据的分类理解变量存储数据的“容器”掌握常见运算符的使用,了解优先级关系知道JavaS......
  • 设计模式[3]-原型模式
    代码:https://gitee.com/Aes_yt/design-pattern原型模式概念原型模式将一个已经创建的实例作为原型,复制出一个和原型相同的新对象。包括三种角色:抽象原型:抽象角色,提供具体原型需要实现的接口具体原型:被复制的对象,实现抽象原型的接口客户端:发出创建对象的请求。例子:先......
  • JavaScript 的 标签
    标签标签在JavaScript中不是一个常见的特性,但在某些情况下,它们可以用于改善循环的可读性或退出嵌套循环。//使用标签来标识循环loop1:for(leti=0;i<10;i++){//循环1loop2:for(letj=0;j<10;j++){//循环2if(i===2&&j===2){......
  • Java中对继承的学习
    继承目录继承继承的概念为什么需要继承继承的特性继承的优点和缺点继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为......
  • 【HTML】使用Javascript制作网页
    1、Javascript的语法规则JavaScript程序按照在HTML文件中出现的顺序逐行执行。JavaScript严格区分字母大小写。在JavaScript中,每行结尾的分号可有可无。JavaScript中主要包括两种注释:单行注释和多行注释。单行注释使用双斜线“//”作为注释标签,多行注释是以“/”标签开始,以......
  • 从企业管理到智慧城市:数据可视化大屏的多领域应用详解(AxureRP原型多行业案例演示)
    前言:在现代商业环境中,广泛应用于政府、金融、互联网、制造业等多个领域,数据驱动决策已成为企业提升竞争力的关键要素之一。无论是智慧城市的管理中心,还是企业的数据中心,都能见到其身影。数据可视化大屏,作为一种高效直观的数据展示工具,能够将复杂的数据转化为易于理解的图形和图表......
  • JavaScript day-09
    目录1.从ECMA到W3C1.1API的概念1.2WebAPI的概念2.什么是DOM?3.DOM节点4.DOM节点树5.节点之间的关系6.获取元素节点6.1根据id获取元素6.2根据标签名获取元素6.3根据class获取元素6.4获取特殊元素7.修改节点7.1改变HTML内容7.2改变CSS样......
  • 【JavaScript】字符串01 - padStart() 和 padEnd()
    在JavaScript中,我们可以使用padStart()和padEnd()方法来完成字符串补全。下面给大家介绍一下这两个方法的使用。padStart()方法用于在当前字符串的前面填充指定的字符,直到字符串的长度达到指定的长度。padEnd()方法用于在当前字符串的后面填充指定的字符,直到字符串的长......
  • 初识JavaScript
    1.什么是JavaScriptJavaScript(JS)是⼀种具有函数优先的轻量级,解释型或即时编译型的编程语⾔。虽然它是作为开发Web⻚⾯的脚本语⾔⽽出名的,但是它也被⽤到了很多⾮浏览器环境中,例如Node.js、ApacheCouchDB和AdobeAcrobat。JavaScript是⼀种基于原型编程、多范式的......
  • 【python】面向对象之继承
    1.什么是继承?通过继承,我们可以从既有的类上衍生出新的类。如果程序的需求为仅修改或删除某项功能,此时不需要将该类的成员数据及成员函数重新写一遍,只需要“继承”原先已定义好的类就可以产生新的类了。继承是指将现有类的属性和行为,经过修改或重写(Override)之后,就可产生出拥有......