JavaScript学习笔记——对象

news2024/10/7 8:21:12

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...除此之外JavaScript 允许自定义对象。

一、所有事物都是对象

JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。

1.布尔型可以是一个对象。

2.数字型可以是一个对象。

3.字符串也可以是一个对象

4.日期是一个对象

5.数学和正则表达式也是对象

6.数组是一个对象

7.甚至函数也可以是对象

对象只是一种特殊的数据。对象拥有属性方法

1.1 访问对象的属性

属性是与对象相关的值。

访问对象属性的语法是:

objectName.propertyName

1.2 访问对象的方法

方法是能够在对象上执行的动作。

可以通过以下语法来调用方法:

objectName.methodName()

二、创建JavaScript对象

通过 JavaScript,能够定义并创建自己的对象。

创建新对象有两种不同的方法

1.使用 Object 定义并创建对象的实例。

2.使用函数来定义对象,然后创建新的对象实例。

2.1 使用 Object

在 JavaScript 中,几乎所有的对象都是 Object 类型的实例,它们都会从 Object.prototype 继承属性和方法。

Object 构造函数创建一个对象包装器。

Object 构造函数,会根据给定的参数创建对象,具体有以下情况:

1.如果给定值是 null 或 undefined,将会创建并返回一个空对象。

2. 如果传进去的是一个基本类型的值,则会构造其包装类型的对象。

3. 如果传进去的是引用类型的值,仍然会返回这个值,经他们复制的变量保有和源对象相同的引用地址。

4. 当以非构造函数形式被调用时,Object 的行为等同于 new Object()。

语法格式:

// 以构造函数形式来调用

new Object([value])

value 可以是任何值。

示例如下:

以下实例使用 Object 生成布尔对象:

// 等价于 o = new Boolean(true);

var o = new Object(true);

实例这个例子创建了对象的一个新实例,并向其添加了四个属性:

person=new Object();

person.firstname="John";

person.lastname="Doe";

person.age=50;

person.eyecolor="blue";

也可以使用对象字面量来创建对象,语法格式如下:

{ name1 : value1, name2 : value2,...nameN : valueN }

其实就是大括号里面创建 name:value 对,然后 name:value 对之间以逗号 , 隔开。

实例

person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};

注意:JavaScript 对象就是一个 name:value 集合。

可以通过为对象赋值,向已有对象添加新属性

2.2 JavaScript 类

JavaScript 是面向对象的语言,但 JavaScript 不使用类。

在 JavaScript 中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样)。

JavaScript 基于 prototype,而不是基于类的。

JavaScript for...in 循环

JavaScript for...in 语句循环遍历对象的属性。

语法

for (variable in object)

{

执行的代码……

}

注意: for...in 循环中的代码块将针对每个属性执行一次。

对象是可变的,它们是通过引用来传递的。

三、prototype(原型对象)

3.1 prototype 继承

所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法:

  1. Date 对象从 Date.prototype 继承。
  2. Array 对象从 Array.prototype 继承。
  3. Person 对象从 Person.prototype 继承。

所有 JavaScript 中的对象都是位于原型链顶端的 Object 的实例。

JavaScript 对象有一个指向一个原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。

Date 对象, Array 对象, 以及 Person 对象从 Object.prototype 继承。

3.2 添加属性和方法

有的时候我们想要在所有已经存在的对象添加新的属性或方法。

另外,有时候我们想要在对象的构造函数中添加属性或方法。

使用 prototype 属性就可以给对象的构造函数添加新的属性:

四、Number 对象

JavaScript 只有一种数字类型。可以使用也可以不使用小数点来书写数字。

在JavaScript中,数字不分为整数类型和浮点型类型,所有的数字都是由 浮点型类型。 JavaScript 采用 IEEE754 标准定义的 64 位浮点格式表示数字,它能表示最大值(Number.MAX_VALUE)为 ±1.7976931348623157e+308,最小值(Number.MIN_VALUE)为 ±5e-324

此格式用 64 位存储数值,其中 0 到 51 存储数字(片段),52 到 62 存储指数,63 位存储符号:

整数(不使用小数点或指数计数法)最多为 15 位。

小数的最大位数是 17,但是浮点运算并不总是 100% 准确

八进制和十六进制

如果前缀为 0,则 JavaScript 会把数值常量解释为八进制数,如果前缀为 0 和 "x",则解释为十六进制数。

注意:绝不要在数字前面写零,除非需要进行八进制转换

默认情况下,JavaScript 数字为十进制显示。

但是可以使用 toString() 方法 输出16进制、8进制、2进制。

Number属性

属性

描述

Number.MAX_VALUE

最大值

Number.MIN_VALUE

最小值

Number.NaN

非数字

Number.NEGATIVE_INFINITY

负无穷,在溢出时返回

Number.POSITIVE_INFINITY

正无穷,在溢出时返回

Number.EPSILON

表示 1 和比最接近 1 且大于 1 的最小 Number 之间的差别

Number.MIN_SAFE_INTEGER

最小安全整数

Number.MAX_SAFE_INTEGER

最大安全整数

数字方法:

方法

描述

Number.parseFloat()

将字符串转换成浮点数,和全局方法 parseFloat() 作用一致

Number.parseInt()

将字符串转换成整型数字,和全局方法 parseInt() 作用一致

Number.isFinite()

判断传递的参数是否为有限数字

Number.isInteger()

判断传递的参数是否为整数

Number.isNaN()

判断传递的参数是否为 isNaN()

Number.isSafeInteger()

判断传递的参数是否为安全整数

五、字符串(String) 对象

String 对象用于处理已有的字符块

一个字符串用于存储一系列字符一个字符串可以使用单引号或双引号

字符串(String)使用长度属性length来计算字符串的长度:

5.1 在字符串中查找字符串

字符串使用 indexOf() 来定位字符串中某一个指定的字符首次出现的位置:

实例

var str="Hello world, welcome to the universe.";
var n=str.indexOf("welcome");

如果没找到对应的字符函数返回-1

lastIndexOf() 方法在字符串末尾开始查找字符串出现的位置。

5.2 内容匹配

match()函数用来查找字符串中特定的字符,并且如果找到的话,则返回这个字符。

实例

var str="Hello world!";
document.write(str.match("world") + "<br>");
document.write(str.match("World") + "<br>");
document.write(str.match("world!"));

5.3 替换内容

replace() 方法在字符串中用某些字符替换另一些字符。

实例

str="Please visit Microsoft!"
var n=str.replace("Microsoft","Runoob");

5.4 字符串大小写转换

字符串大小写转换使用函数 toUpperCase() / toLowerCase():

实例

var txt="Hello World!";       // String
var txt1=txt.toUpperCase();   // txt1 文本会转换为大写
var txt2=txt.toLowerCase();   // txt2 文本会转换为小写

5.5 字符串转为数组

字符串使用split()函数转为数组:

实例

txt="a,b,c,d,e"   // String
txt.split(",");   // 使用逗号分隔
txt.split(" ");   // 使用空格分隔
txt.split("|");   // 使用竖线分隔 

 最后附上一个较于完整的例子:

</head>
<body>
<hr/>
<p id="p1">点击按钮haha查看“haha”首次出现的位置!</p><hr/>
<p id="p2">0</p><hr/>
<p id="p3">请访问 Microsoft!</p><hr/>

<button onclick="myFunction()">点我</button>
<button onclick="ThisFunction()">点我查看结果</button>
<script>
var str="good good study!";
var txt = "Hello World!";

//使用length计算并输出字符串的长度
document.write("<p>" + txt.length + "</p>" + "<hr/>");
//利用indexOf()在字符串中查找字符串
function myFunction(){
	var str=document.getElementById("p1").innerHTML;
	var n=str.indexOf("haha");
	document.getElementById("p2").innerHTML=n+1;
}
//利用match()进行内容匹配
document.write("<hr/>" + str.match("good") + "<br>");
document.write(str.match("day") + "<br>");
document.write(str.match("study") + "<hr/>");
//利用replease()替换内容
function ThisFunction() {
    var str = document.getElementById("p3").innerHTML; 
    var txt = str.replace("Microsoft","wuhu~");
    document.getElementById("p3").innerHTML = txt;
}
//更改字符串的大小写
document.write("<hr/>" + "<p>" + txt.toUpperCase() + "</p>" );
document.write("<p>" + txt.toLowerCase() + "</p>" );
document.write("<p>" + txt + "</p>" + "<hr/>");
</script>

</body>
</html>

文章来源于菜鸟教程。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FHE Circuit Privacy

参考文献&#xff1a; [MP12] Micciancio D, Peikert C. Trapdoors for lattices: Simpler, tighter, faster, smaller[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Berlin, Heidelberg: Springer Berlin Heidelberg, …

视频转码教程:轻松制作GIF动态图,一键高效剪辑操作

随着社交媒体的兴起&#xff0c;GIF动态图已经成为了人们表达情感、分享精彩瞬间的重要方式。而将视频转化为GIF动态图&#xff0c;不仅可以方便地在社交媒体上分享&#xff0c;还可以延长视频的播放时长&#xff0c;吸引更多的观众。本篇文章将为大家介绍如何将视频轻松转化为…

使用 Ruby 的 Nokogiri 库来解析

爬虫程序的主要目标是获取指定网站上的数据。在这里&#xff0c;我们将使用 Ruby 的 Nokogiri 库来解析 HTML&#xff0c;并使用 HTTParty 库来发送 HTTP 请求。下面是一个简单的示例&#xff0c;演示如何使用 Ruby 编写一个爬虫程序来爬取 1688 网站的数据。 require nokogir…

计网----累积应答,TCP的流量控制--滑动窗口,粘包问题,心跳机制,Nagle算法,拥塞控制,TCP协议总结,UDP和TCP对比,中介者模式

计网----累积应答&#xff0c;TCP的流量控制–滑动窗口&#xff0c;粘包问题&#xff0c;心跳机制&#xff0c;Nagle算法&#xff0c;拥塞控制&#xff0c;TCP协议总结&#xff0c;UDP和TCP对比&#xff0c;中介者模式 一.累积应答 1.什么是累计应答 每次发一些包&#xff0…

【小尘送书-第十一期】《算法秘籍》:算法是编程的基石,开发的核心

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…

【RocketMQ】深入剖析延迟消息核心实现原理

一、背景 电商相关业务的时候&#xff0c;有一个常见的需求场景是&#xff1a;用户下单之后&#xff0c;超过半小时不支付&#xff0c;就取消订单。现在我们在淘宝京东买东西&#xff0c;或者通过美团点外卖&#xff0c;下单之后&#xff0c;如果不在指定时间内支付&#xff0…

个人实用的街头防身自卫术,男女必学的防身实战技能

一、教程描述 本套教程&#xff0c;大小455.93M&#xff0c;共有17个文件。 二、教程目录 实战防身术01、街头防身自卫术示例.mp4 实战防身术02、街头防身自卫术序言.mp4 实战防身术03、腕部被抓解脱.mp4 实战防身术04、胸襟被抓解脱.mp4 实战防身术05、腰部被抓解脱.mp…

应用在全固态激光雷达中的ALS环境光传感芯片

全固态扫描式激光雷达系统这一创新性技术在多个领域都有着巨大的潜力&#xff0c;将改变未来科技格局。本文将探讨这一革命性的发明&#xff0c;以及它在自动驾驶、无人机、工业自动化、环境监测等领域的关键应用。 传统激光雷达系统通常使用复杂的机械装置&#xff0c;这些部…

如何上传自己的Jar到Maven中央仓库

在项目开发过程中&#xff0c;我们常常会使用 Maven 从仓库拉取开源的第三方 Jar 包。本文将带领大家将自己写好的代码或开源项目发布到 Maven中央仓库中&#xff0c;让其他人可以直接依赖你的 Jar 包&#xff0c;而不需要先下载你的代码后 install 到本地。 注册帐号 点击以…

基于Pymavlink协议的BlueROV开发

1 BlueROV概述 1.1 什么是ROV 维基百科遥控潜水器&#xff08;Remotely operated underwater vehicle&#xff0c;缩写ROV&#xff09;是一个无人的水下航行器&#xff0c;以电缆连接到母船的人员操作。常搭载水下光源和照相机、摄影机、机械手臂、声纳等。因为具有机械手臂&a…

华为OD机试 - 找朋友(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述大白话解释一下就是&#xff1a;1、输入&#xff1a;2、输出&#xff1a;3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专…

安装node-sass安装失败(Failed at the node-sass@4.14.1 postinstall script.)

npm i安装依赖&#xff0c;安装node-sass失败 全局设置淘宝镜像&#xff0c;还是下载不下来。下载不下来可能是因为默认从github上去下载node-sass&#xff0c;而国内经常连不上或者网络不好。可以单独下载 npm i node-sass4.14.1 --sass_binary_sitehttps://npm.taobao.org/…

Maven多环境下 active: @profileActive@报错问题解决

1.报错&#xff1a; Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found character that cannot start any token.(Do not use for indentation) 2.解决办法&#xff1a; 在主pom的文件下&#xff0c;重新加载&#xff1a;

模型可解释性

模型可解释性 前言导读Background1、为什么需要可解释性&#xff1f;2、诞生背景3、研究现状4、常见的模型可解释性方法4.1 基于模型自身的可解释性1&#xff09;Explanation Generation2&#xff09;Prototype Network 4.2 基于结果的可解释性 5、应用前景6、面临挑战 前言导读…

基于ssm的校园快递物流管理系统(java+jsp+ssm+javabean+mysql+tomcat)

博主24h在线&#xff0c;想要源码文档部署视频直接私聊&#xff0c;9.9拿走&#xff01; 基于javawebmysql的ssm校园快递物流管理系统(javajspssmjavabeanmysqltomcat) 运行环境&#xff1a; Java≥8、MySQL≥5.7、Tomcat≥8 开发工具&#xff1a; eclipse/idea/myeclipse/s…

php实现普通和定时跳转的几种方式

一、普通跳转 1、使用header函数&#xff1a;通过设置HTTP头部信息实现页面跳转。可以使用Location头部指定跳转的URL。例如&#xff1a; header("Location: http://www.example.com"); exit(); 2、使用JavaScript&#xff1a;可以使用JavaScript的window.location…

倾斜摄影三维模型的根节点合并的并行处理技术分析

倾斜摄影三维模型的根节点合并的并行处理技术分析 倾斜摄影三维模型的根节点合并是指将多个倾斜摄影拍摄得到的三维模型中的根节点进行合并&#xff0c;以减少模型大小和复杂度。在处理大规模的倾斜摄影数据时&#xff0c;传统的串行处理方法效率较低&#xff0c;因此需要使用并…

Shiro安全框架

一、与SpringBoot整合 ①&#xff1a;框架整合 1. 创建SpringBoot项目 环境&#xff1a; jdk: 1.8SpringBoot: 2.5.14 2. 整合MyBatis根据实体类生成表 可查看文章&#xff1a;https://juejin.cn/post/7234324615015776315 按照以上笔记配置后在补充一下代码 依赖MyBatisP…

QML 中TextField输入框和下划线的设定

1.TextField的默认显示方式是输入框&#xff0c;如下所示: TextField { placeholderText: qsTr("Enter name") } 但是也有这样显示的,它变成了下划线: 在属性设置中是找不到相关设置&#xff0c;结果在mian.cpp中发现了一行代码会影响效果。这行代码是…

网工实验笔记:IPv6(配置6to4隧道)

1. 实验目的 熟悉6to4隧道的应用场景 掌握6to4隧道的配置方法 2. 实验拓扑 实验拓扑如图所示&#xff1a; 想要华为数通配套实验拓扑和配置笔记的朋友们点赞关注&#xff0c;评论区留下邮箱发给你! 3. 实验步骤 &#xff08;1&#xff09;配置IP地址 AR1的配置 …