JavaScript的原型与原型链

devtools/2024/10/15 14:04:11/

一、对象

在 JavaScript 中,了解原型和原型链之前,先认识对象的概念。

1、简介

对象(Object)是一种无序的键值对集合,键为字符串,值可以是任意类型。函数也是对象。

2、创建方式

常见的对象创建方式如下:

javascript">// 字面量语法创建:使用大括号{}来创建一个新对象。
var user = { name: "Jack", age: 26 }// 通过Object的构造函数创建
var user = new Object()
user.name = "Jack"
user.age = 26 // 通过构造函数创建
function User(name, age) {this.name = namethis.age = agethis.say = function() {console.log('我能说话')}
}
var u1 = new User('Jack', 26)
var u2 = new User('Rose', 25)

通过一个函数创建的多个实例对象中包含的属性和方法是彼此对立的,占用不同的内存地址。这意味着即便两个实例的方法看起来相同,实际上它们是不同的,这会导致内存浪费。

javascript">u1.say === u2.say // false

二、原型和隐式原型

1、原型(prototype

在 JavaScript 中,每个函数对象都有一个特殊的属性 prototype,它指向原型对象。实例对象可以通过原型(prototype)实现共享方法和属性。

say 方法放在函数对象的原型上,所有实例都可以共享这个方法,从而避免内存浪费。

javascript">User.prototype.say = function() {console.log('我能说话')
}u1.say() // 我能说话
u2.say() // 我能说话console.log(u1.say === u2.say) // true

http://www.ppmy.cn/devtools/126193.html

相关文章

基于Opencv中的DNN模块实现图像/视频的风格迁移

一、DNN模块的介绍 1、简介 OpenCV中的DNN(Deep Neural Network)模块是一个功能强大的组件,它支持深度学习网络模型的加载和推理。虽然DNN模块不提供模型的训练功能,但它可以与主流的深度学习框架(如TensorFlow、Caf…

CSS @规则(At-rules)系列详解___ @color-profile规则使用方法

CSS 规则(At-rules)系列详解 ___ color-profile规则使用方法 本文目录: 一、color-profile规则定义和用法 二、color-profile规则的语法 三、color-profile使用方法例子 2.1、src: local指定本地颜色配置文件 2.2、src: url指定颜色配置文件 2.3、src: url指…

算法 | 归并排序、求逆序对

目录 排序数组(归并排序) 题解: 交易逆序对的总数 题解: 计算右侧小于当前元素的个数 题解: 翻转对 题解: 排序数组(归并排序) 912. 排序数组 - 力扣(LeetCode…

STL之set、map的使用

STL之set、map 1. 序列式容器和关联式容器2. set系列的使⽤参考文档链接:2.1 set的介绍(2)set的增删查2.2 multiset的介绍 3 map3.1 参考文档3.2 map类的介绍3.3 pair类型介绍3.4 map的构造3.6 map的数据修改3.7 multimap和map的差异 1. 序列…

【opencv】以A4纸为参照物测量物体尺寸(包含:偏移纠正,轮廓检测,绘制轮廓函数)

文章目录 测试结果原图python代码ObjectMeasuremetn.pyutils.py测试结果 原图 python代码 ObjectMeasuremetn.py import cv2 import numpy as np import utilswebcam = False path = ../da

科技云报到:大模型时代下,向量数据库的野望

科技云报到原创。 自ChatGPT爆火,国内头部平台型公司一拥而上,先后发布AGI或垂类LLM,但鲜有大模型基础设施在数据层面的进化,比如向量数据库。 在此之前,向量数据库经历了几年的沉寂期,现在似乎终于乘着Ch…

Linux:Ubuntu系统开启SSH服务

在Ubuntu上开启SSH服务,可以按照以下步骤进行: 1.安装OpenSSH服务 如果你还没有安装OpenSSH服务,可以使用以下命令安装: sudo apt update sudo apt install openssh-server2. 启动SSH服务 安装完成后,启动SSH服务&a…

【项目部署】在亚马逊云(AWS)上使用宝塔面板部署前后端分离的 Vue3 + Spring Boot 项目

1. 准备工作 AWS 账户:确保你已经注册了 AWS 账户,并且有足够的权限来创建 EC2 实例和配置安全组。【AWS账户注册】注册亚马逊免费云服务器一年期个人用户项目准备:确保你已经准备好了前端 Vue3 项目(并且已打包生成静态文件&…