Javascript之旅 对象的原型链之由来

yizhihongxing

(一)对象的原型链由来

在 JavaScript 中,每个对象都有一个原型对象。原型对象充当着对象的模板,它包含了常用的属性和方法,子对象可以通过原型链继承这些属性和方法。 每个对象都可以通过__proto__属性访问它的原型对象,对象的原型对象也可以拥有自己的原型对象,这就是所谓的原型链。

但是,面对大量对象,JavaScript 在内存中会保存很多原型对象,这样会导致内存浪费。为了解决这个问题,JavaScript 引入了 prototype 属性,用来指定一个构造函数的原型对象,这样所有通过该构造函数创建的对象都会共享一个原型对象,从而达到节约内存的效果。

(二)实现原型继承的两种方式

在 JavaScript 中,实现原型链有两种方式:构造函数式和对象字面量。

1.构造函数式

构造函数式是定义一个函数作为构造函数,再通过 new 关键字创建一个对象的方式,实现原型继承。

例如:

// 构造函数式原型链继承
function Animal() {
  this.species = 'mammal'
}
function Cat(name, color) {
  Animal.call(this)   // 把 Animal 的实例属性添加到 Cat 中
  this.name = name
  this.color = color
}
let cat1 = new Cat('Tom', 'black')
console.log(cat1.species)  //输出 mammal

在这个例子中, Animal 和 Cat 是两个构造函数,用 call 方法将 Animal 的实例属性添加到 Cat 中,从而实现原型链继承。

2.对象字面量

对象字面量是直接使用对象字面量表示对象,通过指定原型对象属性来实现原型继承。

例如:

let animal = {
  species: 'mammal'
}
let cat = {
  name: 'Tom',
  color: 'black'
}
cat.__proto__ = animal; // 指定 cat 对象的原型对象为 animal 对象
console.log(cat.species);  //输出 mammal

在这个例子中, animal 对象是一个具有 species 属性的普通对象, cat 对象继承了 animal 对象的所有属性,因为它的原型对象被指定为 animal 对象。

(三)总结

在 JavaScript 中,原型链是实现原型继承的关键,每个对象都有一个__proto__属性,用于访问它的原型对象。原型链的继承方式有两种,一种是通过构造函数式,另一种是通过对象字面量。无论是哪种方式,只要实现了正确的继承方式,就可以达到代码复用和内存节省的目的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript之旅 对象的原型链之由来 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JS实现简单的二维矩阵乘积运算

    下面是JS实现简单的二维矩阵乘积运算的攻略: 什么是二维矩阵? 二维矩阵是一个由数值排列成的矩阵,可以用来表示数据、图片以及程序中的细节。二维矩阵一般是由行和列组成,行和列之间用逗号隔开,矩阵中的每个数则通过空格隔开。 例如: 1 2 3 4 5 6 7 8 9 这便是一个3行3列的二维矩阵,其中最左上角的数为1,最右下角的数为9。 怎样进行矩阵乘积运算? …

    JavaScript 2023年5月28日
    00
  • 前端token中4个存储位置的优缺点说明

    前端Token是指存储在前端网页中的用来标识用户身份的令牌,一般用于用户登录、验证和权限控制等方面。前端Token可以存在多个存储位置中,通常有四种:Cookie、Web Storage、IndexedDB、Memory。 以下是关于这四个存储位置的优缺点说明: Cookie Cookie是HTTP协议中常用的一种存储方式,可以存放在客户端的浏览器中,也可以…

    JavaScript 2023年6月11日
    00
  • 以JSON形式将JS中Array对象数组传至后台的方法

    将JavaScript中的Array对象数组以JSON格式传递至后台的基本步骤包括以下几点: 创建一个Array对象数组 使用JSON.stringify()将Array对象数组转换为JSON格式字符串 使用XMLHttpRequest对象将JSON格式字符串发送到后台 在后台解析JSON字符串并从中提取需要的数据 以下是一个简单的示例代码,演示如何将JS中…

    JavaScript 2023年5月27日
    00
  • js中如何对url进行编码和解码

    在 JavaScript 中,有两种方式可以对 URL 进行编码和解码,分别是 encodeURI() 和 encodeURIComponent()。 encodeURI() encodeURI() 方法用于将 URI (Uniform Resource Identifier) 进行编码,但是不会对一些特殊字符 (;,/?:@&=+$#) 进行编码。…

    JavaScript 2023年5月20日
    00
  • javascript实现自动输出文本(打字特效)

    下面是JavaScript实现自动输出文本(打字特效)的完整攻略。 1. 前置知识 JavaScript基础知识 HTML/CSS基础知识 DOM基础知识 2. 确定需求 在实现自动输出文本的过程中,我们需要考虑以下问题: 输出文本的内容是什么? 文本输出的速度是多少? 每个字符输出的间隔时间是多少? 3. 实现步骤 3.1 HTML结构 首先,我们需要准备…

    JavaScript 2023年5月28日
    00
  • javascript写的一个表单动态输入提示的代码

    要实现JavaScript写的一个表单动态输入提示,我们需要使用以下步骤: HTML页面中创建表单输入框及提示框的DOM节点; 监听表单输入框的keyup事件,获取输入框中输入的内容; 根据输入的内容动态生成提示框中的内容; 实现鼠标移动到提示框中的选项可以高亮并填充到输入框中; 实现键盘上下键可以在提示框中切换选项并填充到输入框中; 实现鼠标点击或回车键可…

    JavaScript 2023年6月10日
    00
  • 教你JS中的运算符乘方、开方及变量格式转换

    教你JS中的运算符乘方、开方及变量格式转换 一、乘方运算 在JavaScript中,计算数字的乘方可以使用 Math.pow() 函数,该函数需要两个参数,第一个是底数,第二个是指数。例如: Math.pow(2, 3); // 计算2的3次方,结果为8 二、开方运算 在JavaScript中,计算数字的平方根可以使用 Math.sqrt() 函数,该函数需…

    JavaScript 2023年5月28日
    00
  • Javascript 实用小技巧

    Javascript 实用小技巧 Javascript 作为一门非常灵活的脚本语言,具有很多实用的小技巧,本文将为您介绍几个实用的 Javascript 技巧。 1. 用箭头函数代替匿名函数 在 Javascript 中,匿名函数是非常常见的一种函数,但是匿名函数的语法不如箭头函数简洁易懂。我们可以使用 ES6 中的箭头函数来替换匿名函数: // 用匿名函数…

    JavaScript 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部