JavaScript(二)---【js数组、js对象、this指针】

零.前言

JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】-CSDN博客

一.js数组

js中也有数组的概念,数组使用“[]”定义,其中数组中还可以嵌套数组从而达到多层数组的作用。

访问数组中的某个元素,我们可以直接使用“下标索引”来访问。

(其实就是Python中的列表,一毛一样,怀疑jspython是否师出同门)

定义数组的时候,我们通常也使用“var”和“let”定义数组并且将数组赋值给某个变量,至于作用于嘛,和作者上一篇文章讲的一样没有改变。

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var listDimension1 = ["小明",160,100];
        console.log(listDimension1);
        var listDimension2 = [["小明",160,100],["小红",180,1110]]
        console.log(listDimension2);
    </script>
</body>
</html>

 效果:

二.js对象

因为js可以面向对象,因此也有“对象”的概念。

在最新的ES标准中,js也有“”了。。。

跟“Python”的类对象相似,js对象也具有“属性”和“方法”两个概念。

js对象中,属性用:“属性:属性值键值对来表示,而方法就是一个函数

在外部访问js对象中的属性或者方法可以使用:

对象名.属性(方法)”或者“对象名[属性]”使用索引只能访问对象属性,而不能访问对象方法

又跟Python一样,学会Python == 学会js

2.1对象属性

例如,我们创建一个只有属性的对象:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var car = {type:"轿车",model:"e300L",价格:299999};
        console.log(car);
        console.log(car.type);
        console.log(car.model);
        console.log(car.价格);
    </script>
</body>
</html>

效果:

值得注意的是,在上面的例子中,"价格"属性是一个中文,我们在应用中并不建议使用中文做属性,因为这在某些地方可能会因为编码的问题出现崩溃。

2.2对象方法

严格来说对象方法也是对象属性的一种,不过为了便于区分,我们还是单独拿出来讲,大家只需要记住对象方法底层也是一个对象属性就好了。

对象方法是在“对象上执行的动作”,因此这个方法绝大多数情况下是对:“对象自身”进行某些操作。

例如一个包含对象方法的js对象:

var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 678,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

当我们在程序外部调用它时:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var person = {
                firstName: "Bill",
                lastName : "Gates",
                id       : 678,
                fullName : function() {
                    return this.firstName + " " + this.lastName;
                }
        };
        console.log(person.fullName())
    </script>
</body>
</html>

效果:

如果我们使用不带“()这种方式来访问方法,那么将返回“函数定义”:

console.log(person.fullName)

 效果:

 所谓“函数定义”就是:函数内部的代码罢了

2.3this指针

其实this指针完全可以单独作为一章拿出来讲,不过既然上面例子用到了,所以我们就浅浅的讲一下。

如果你学过Python,那么你就可以立马明白“this”指针的含义。

this”指针跟Python对象中的“self”指针一模一样,都是用来代指对象自身

什么意思呢?this指针就是用来表示,这个对象是谁,是以谁的身份来执行这个函数的

例如上面的例子中的this指针就是:“person”对象。

2.4使用new关键字创建系统内置对象

除了“将对象显式的写出赋值给变量”这种方式来创建对象以外,我们还可以使用“new”关键字来创建对象(没错,和C++的new关键字一个尿性....)。

其中我们可以“自定义一个类”(后面篇章再讲),也可以使用“内置对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var x = new String();    //定义x为String对象
        var y = new Number();    //定义y为Number对象
        var z = new Boolean();    //定义z为Boolean对象
        console.log(typeof x,typeof y,typeof z)
        var x = "123";    //定义x为字符串
        var y = 123;    //定义y数值
        var z = true;    //定义z为布尔
        console.log(typeof x,typeof y,typeof z)
    </script>
</body>
</html>

效果:

可以明显看到三者的差别。

PS:请尽量避免使用“String、Number、Boolean对象,这会大大降低代码运行速度!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/506420.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是HTTP? HTTP 和 HTTPS 的区别?

文章目录 一、HTTP二、HTTPS三、区别参考文献 一、HTTP HTTP (HyperText Transfer Protocol)&#xff0c;即超文本运输协议&#xff0c;是实现网络通信的一种规范 在计算机和网络世界有&#xff0c;存在不同的协议&#xff0c;如广播协议、寻址协议、路由协议等等… 而HTTP是…

【Vue】搭建第一个vue3+vite前段项目

不要奇怪我为啥突然开始写前端的文章&#xff0c;唉&#xff0c;一切都是公司的任务罢了。 其实这周学习了前端和coverity&#xff0c;但是后者就算学了我也不能写在我博客里&#xff0c;所以还是写一写前端吧。 node.js 和 npm npm是一个类似于 maven 的包管理器。 去以下…

55 npm run serve 和 npm run build 的分包策略

前言 这里我们来看一下 vue 这边 打包的时候的一些 拆分包的一些策略 我们经常会使用到 npm run build 进行服务的打包 然后 打包出来的情况, 可能如下, 可以看到 chunk-vendors 是进行了包的拆分, 我们这里就是 来看一下 这里 npm run build 的时候的, 一个分包的策略 测试…

【Leetcode每日一题】模拟 - 提莫攻击(难度⭐)(45)

1. 题目解析 题目链接&#xff1a;495. 提莫攻击 2.算法原理 一、分情况讨论 要计算中毒的总时长&#xff0c;我们需要考虑时间点之间的差值&#xff0c;并根据这些差值来确定中毒的实际持续时间。 情况一&#xff1a;差值大于等于中毒时间 假设你的角色在时间点A中毒&#…

C语言 | Leetcode C语言题解之两数相加

题目&#xff1a; 题解&#xff1a; struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {struct ListNode *head NULL, *tail NULL;int carry 0;while (l1 || l2) {int n1 l1 ? l1->val : 0;int n2 l2 ? l2->val : 0;int sum n1 n2 …

C#(winform) 调用MATLAB函数

测试环境 VisualStudio2022 / .NET Framework 4.7.2 Matlab2021b 参考&#xff1a;C# Matlab 相互调用 Matlab 1、编写Matlab函数 可以没有任何参数单纯定义matlab处理的函数&#xff0c;输出的数据都存在TXT中用以后期读取数据 function [result,m,n] TEST(list) % 计算…

上海亚商投顾:沪指低开高走 5.5G概念股午后走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指3月 29日震荡反弹&#xff0c;尾盘涨幅扩大至1%&#xff0c;深成指、创业板指跟随上扬。周期股再度走强&a…

基于SpringBoot+Vue企业级工位管理系统(源码+部署说明+演示视频+源码介绍+lw)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

Modbus取数测试程序

modbus协议&#xff0c;modbus-tcp协议取数测试程序 Java实现modbus-tcp协议取数操作&#xff0c;数据类型转换操作

list(链表)容器(一)

一、list基本概念 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成&#xff1a;链表由一系列结点组成 结点的组成&#xff1a;一个是存储数据元素的数据域&#xff0…

Mac OS上使用matplotlib库显示中文字体

文章目录 问题描述解决步骤参考文章 问题描述 如果我们想要使用matplotlib画图的话&#xff0c;可能会出现下面的这种warning: UserWarning: Glyph 24212 (\N{CJK UNIFIED IDEOGRAPH-5E94}) missing from current font.解决步骤 解决这个问题&#xff0c;可以按照下面的做法…

【Leetcode】331. 验证二叉树的前序序列化

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时&#xff0c;我们可以记录下这个节点的值。如果它是一个空节点&#xff0c;我们可以使用一个标记值记录&#x…

Tidb和MySQL性能简单测试对比

一、单SQL性能对比 由于TiDB的并发能力优秀&#xff0c;但是单个SQL执行延迟较差&#xff0c;为了客观对比&#xff0c;所以只用1个线程来压测tidb和mysql&#xff0c;以观察延迟情况 二、并发SQL性能对比 TiDB:v6.5.2 MySQL:8.0.26 &#xff08;单机&#xff09; 三、结论 …

构建安全高效的用户登录系统:登录流程设计与Token验证详解

在当今数字化时代&#xff0c;用户登录系统是几乎所有在线服务的基础。然而&#xff0c;随着网络安全威胁的不断增加&#xff0c;设计一个安全可靠的登录系统变得至关重要。本文将深入探讨用户登录流程的设计原则以及Token验证的实现方式&#xff0c;带您了解如何构建安全高效的…

【MySQL笔记】行转列+列转行+行转列为什么用SUM()

文章目录 行转列思路实现行转列为什么要用SUM等聚合函数 列转行思路回顾下Union 实现列转行 Reference 行转列 思路 GROUP BY聚合函数 实现行转列 SELECT product_id,SUM(IF(store store1, price, NULL)) AS store1,SUM(IF(store store2, price, NULL)) AS store2,SUM(IF(…

Vulnhub:BROKEN: GALLERY

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb WEB wen信息收集 目录扫描 进制转换 ssh登录 提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l Interface: eth0, type: EN10MB, M…

上位机图像处理和嵌入式模块部署(qmacvisual形状匹配)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在qmacvisual软件当中&#xff0c;提供了两种模板匹配的方法。除了前面介绍的灰度匹配&#xff0c;就是今天讲的形状匹配。当然&#xff0c;对于使…

AI如何影响装饰器模式与组合模式的选择与应用

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f680; 转载自热榜文章&#xff1a;设计模式深度解析&#xff1a;AI如何影响…

【动手学深度学习】深入浅出深度学习之利用神经网络识别螺旋状数据集

目录 &#x1f31e;一、实验目的 &#x1f31e;二、实验准备 &#x1f31e;三、实验内容 &#x1f33c;1. 生成螺旋状数据集 &#x1f33c;2. 打印数据集 &#x1f33c;3. 编程实现 &#x1f33b;仿射层-Affine类 &#x1f33b;传播层-Sigmoid类 &#x1f33b;损失函数…

[数据结构初阶]堆的应用

各位读者老爷好&#xff0c;鼠鼠又来了捏&#xff01;鼠鼠上一篇博客介绍的堆&#xff0c;那么今天来浅谈以下堆的应用&#xff0c;那么好&#xff0c;我们先来看两个问题&#xff1a; 1.如果有一组乱序的数组数据&#xff0c;希望你将这组数组的数据排成升序或降序&#xff0c…