JavaScript 第二天

news2024/11/25 3:06:50
  • 深入对象
  • 内置构造函数

一. 深入对象

  • 创建对象三种方式
  • 构造函数
  • 实例成员&静态成员

1.1 创建对象三种方式

① 利用对象字面量创建对象

const o = {
   'name': '哈哈'
}

② 利用new Object 创建对象

const o = new Object({ name: '哈哈' })

③ 构造函数创建对象

1.2 构造函数

① 构造函数:是一种特殊的函数,主要用来初始化对象

② 使用场景:常规的{...} 语法允许创建一个对象,可以使用构造函数快速创建多个类似的对象

③ 约定:

  • 命名以大写字母开头
  • 只能由 new 操作符来执行

④ 写法:

  • 使用new关键词调用函数的行为被称为实例化
  • 实例化构造函数没有参数时可以省略()
  • 构造函数内部无需写return,返回值即为新创建的对象
  • 构造函数内部的return返回的值无效,所以不要写return
  • new Object()  new Date() 也是实例化构造函数
function Pig (uname, age) {
    this.name = uname
    this.age = age
}
const p = new Pig('佩奇', 6)
const q = new Pig('乔治', 3)

⑤ 实例化执行过程

  • 创建新的空对象
  • 构造函数this指向新对象
  • 执行构造函数代码,修改this, 添加新的属性
  • 返回新对象

 1.3 实例成员&静态成员

 ① 实例成员

  • 通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员
  • 为构造函数传入参数,创建结构相同但值不同的对象
  • 构造函数创建的实例对象彼此独立互不影响
function Pig (name) {
    this.name = name
}
const peiqi = new Pig('佩奇')
// 1.实例对象上的属性和方法称为实例成员
peiqi.sayHi = () => {
    console.log('hi')
}
console.log(peiqi)

② 静态成员

  • 构造函数的属性和方法被称为静态成员(静态属性和静态方法)
  • 静态成员只能构造函数来访问
  • 静态方法中的this指向构造函数
Pig.eyes = 2
console.log(Pig.eyes)

Pig.sayHi = function () {
    console.log(this)
}
// 静态成员调用
Pig.sayHi()

二.内置构造函数

  • Object
  • Array
  • String
  • Number

 ① 基本数据类型:字符串,数值,布尔,undefined, null

 ②  引用类型:对象

 ③  字符串,数值,布尔等基本类型也都有专门的构造函数,这些我们称为包装类型

 ④ 引用类型:Object, Array, RegExp, Date等

 ⑤ 包装类型:String, Number, Boolean 等

2.1 Object

① Object 是内置的构造函数,用于创建普通对象

const o = new Object({ name: '哈哈' })

② 三个静态方法

(1)获取所有属性名:Object.keys, 返回的是一个数组

const o = {uname:'pink', age: 18}
// 1.获取所有属性名
console.log(Object.keys(o))

(2)获取所有的属性值:Object.values

console.log(Object.values(o))

(3)拷贝对象: Object.assign(目标,拷贝对象)

         使用场景:经常给对象添加属性

const oo = {}
Object.assign(oo, o)
console.log(oo)


// 追加一个新的属性
Object.assign(o, {gender: '女'})

 2.2 Array

 Array是内置的构造函数,用于创建数组, 建议使用字面量创建,不用Array构造函数创建

1. 实例方法

  •  reduce 返回累计处理的结果,经常用于求和
  • 基本语法
arr.reduce(function(){}, 起始值)
arr.reduce(function(上一次值, 当前值){}, 初始值)
  • 参数

     ① 没有初始值

const total = arr.reduce(function (pre, current) {
    return pre + current
})

     ②  有初始值

const total = arr.reduce(function (pre, current) {
    return pre + current
}, 10)

    ③ 箭头函数写法

const total = arr.reduce((pre, current) => pre + current, 10)
console.log(total)

   ④ reduce的执行过程

  • 如果没有初始值,则上一次值是数组的第一个元素
  • 每一次循环,把返回值给作为下一次循环的上一次值
  • 如果有起始值,则起始值作为上一次值 

2.其他方法

编号方法含义
1join数组元素拼接为字符串,返回字符串
2find查找元素,返回符合测试条件的第一个数组值,如果没有符合条件的就返回undefined
3every检测数组所有元素是否都符合指定条件,如果所有元素都通过检测返回true, 否则返回false
4some检测数组中的元素是否满足指定条件,如果数组中有元素满足条件返回true
5concat合并两个数组,返回生成新数组
6sort对原数组单元值排序
7splice删除或替换原数组单元
8reverse反转数组
9findIndex查找元素的索引值

 

 

 

 

 

 

 

 

 

 

 

  • find方法使用举例:
const arr = ['red', 'blue', 'green']
const re = arr.find(function (item) {
    return item === 'blue'
})
console.log(re)



const arr = [
{
   name: '小米',
   price: 1999
},
{
   name: '华为',
   price: 3999
}
]

const re = arr.find(item => item.name === '小米')
console.log(re)
  •  every方法:每一个是否都符合条件,如果都符合,返回true, 如果有一个不符合,返回false
const arr1 = [10, 20, 30]
const flag = arr1.every(item => item >= 20)
console.log(flag)
  • some方法
const arr1 = [10, 20, 30]
const flag = arr1.some(item => item >= 40)
console.log(flag)

3.数组静态方法

  • 把伪数组转换为真数组
const lis = document.querySelectorAll('ul li')
// lis.pop()   // 伪数组无法使用数组的方法
const liss = Array.from(lis)
liss.pop()
console.log(liss)

2.3 String

编号方法含义
1length实例属性,用来获取字符串的长度
2split(’分隔符‘)用来将字符串拆分成数组
3substring(需要截取的第一个字符的索引,[, 结束的索引号)用于字符串截取
4startswith(检测字符串[, 检测位置索引号]) 检测是否以某字符开头
5includes(搜索的字符串[, 检测位置索引号])判断一个字符串是否包含在另一个字符串中,根据情况返回true或false
6toUpperCase 将字母转换成大写
7toLowerCase用于将字母转换成小写
8indexOf检测是否包含某字符
9endsWith检测是否以某字符结尾
10replace用于替换字符串,支持正则匹配
11match用于查找字符串,支持正则匹配

 

 

 

 

 

 

 

 

 

 

 

 

 

 

// 1.split 字符串转换为数组和join相反
const str = 'pink,red'
const arr = str.split(',')
console.log(arr)

// 2.字符串截取
const str = 'hello'
// 不包含结束的索引号
console.log(str.substring(2, 3))

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

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

相关文章

C进阶(2/7)前篇——指针进阶

前言:本文章讲解部分指针进阶内容。后续继续更新。 文章重点: 1. 字符指针 2. 数组指针 3. 指针数组 4. 数组传参和指针传参 目录 前言:本文章讲解部分指针进阶内容。后续继续更新。 指针初阶了解: 1.字符指针 1.1一道有关于字…

day8 STM32数据搬运工 - DMA

DMA简介 DMA,全称为:Direct Memory Access,即直接存储器访问。 DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路&#x…

(二)掌握最基本的Linux服务器用法——Linux下简单的C/C++ 程序、项目编译

1、静态库与动态库 静态库(Static Library):静态库是编译后的库文件,其中的代码在编译时被链接到程序中,因此它会与程序一起形成一个独立的可执行文件。每个使用静态库的程序都会有自己的库的副本,这可能会导致内存浪费。常用后缀…

Mendix 基础审计模块介绍

一、前言 作为售前顾问,帮助客户选型低代码产品是日常工作。考察一家低代码产品的好坏,其中一个维度就是产品的成熟度。产品成熟度直接影响产品在使用中的稳定性和用户体验,对于新工具导入和可持续运用至关重要。 那怎么考察一个产品是否成…

Ghost-free High Dynamic Range Imaging withContext-aware Transformer

Abstract 高动态范围(HDR)去鬼算法旨在生成具有真实感细节的无鬼HDR图像。 受感受野局部性的限制,现有的基于CNN的方法在大运动和严重饱和度的情况下容易产生重影伪影和强度畸变。 本文提出了一种新的上下文感知视觉转换器(CA-VIT)用于高动态…

UNIAPP中开发企业微信小程序

概述 需求为使用uni-app开发企业微信小程序。希望可以借助现成的uni-app框架,快速开发。遇到的问题是uni-app引入jweixin-1.2.0.js提示异常: Reason: TypeError: Cannot read properties of undefined (reading ‘title’)。本文中描述了如何解决该问题&#xff0c…

Python语法基础——循环

学习目标 通过使用while循环编写重复执行的语句。遵从循环的设计策略开发循环。利用用户的确认控制循环。用哨兵值控制循环。通过使用输入重定向从文件获取大量数据而不是从键盘输入来来获取大量数据,并且使用输出重定向将输出存人文件。使用for循环来实现计数器控制…

【资料包】HDC.Together 2023精选Codelabs指南现已上线(内有活动)

今年HDC.Together 2023的Codelabs挑战系列活动如期而至,众多开发者齐聚一堂,积极参与。本次赛题中部分Codelabs已在官网上线详细操作指南,让我们与众多coders一起探索代码的独特魅力。 01 ArkTS基础知识(ArkTS) 本课程…

Spring系列六:JdbcTemplate

🦒JdbcTemplate 📕实际需求 实际需求: 如果程序员就希望使用spring框架来做项目, spring框架如何处理对数据库的操作呢? 方案1: 使用前面做项目开发的JdbcUtils类方案2: 其实spring提供了一个操作数据库(表)功能强大的类JdbcTemplate. 我们可以同ioc…

目标和——力扣494

文章目录 题目描述解法:动态规划题目描述 解法:动态规划 nt findTargetSumWays(vector<int>& nums, int target){int sum

Paper 推荐第3期|隐私集合求交 PSI 系列

前言&#xff1a; 隐语 awesome-PETs&#xff08;PETs即Privacy-Enhancing Technologies &#xff0c;隐私增强技术&#xff09;精选业内优秀论文&#xff0c;按技术类型进行整理分类&#xff0c;旨在为隐私计算领域的学习研究者提供一个高质量的学习交流社区。awesome-PETs 包…

关于vant2 组件van-dropdown-item,在IOS手机上,特定条件下无法点击问题的探讨

情景重现 先贴有问题的代码 <template><div :class"showBar ? homeContain : homeContain-nobar"><div class"contant" id"content"><van-dialog v-model"loading" :before-close"onBeforeClose" :…

css鼠标样式 cursor: pointer

cursor: none; cursor:not-allowed; 禁止选择 user-select: none; pointer-events:none;禁止触发事件, 该样式会阻止默认事件的发生&#xff0c;但鼠标样式会变成箭头

openpose姿态估计【学习笔记】

文章目录 1、人体需要检测的关键点2、Top-down方法3、Openpose3.1 姿态估计的步骤3.2 PAF&#xff08;Part Affinity Fields&#xff09;部分亲和场3.3 制作PAF标签3.4 PAF权值计算3.5 匹配方法 4、CPM&#xff08;Convolutional Pose Machines&#xff09;模型5、Openpose5.1 …

【uniapp2】获取manifest里的versionName版本号

在要展示版本号的页面中添加&#xff1a; onLoad() {// 获取本地应用资源版本号plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) > {this.innerVer wgtinfo.version;this.versionCode wgtinfo.versionCode;console.log(wgtinfo);});},打印看看获取的信息&#x…

机器学习---逻辑回归代码

1. 逻辑回归模型 import numpy as npclass LogisticRegression(object):def __init__(self, learning_rate0.1, max_iter100, seedNone):self.seed seedself.lr learning_rateself.max_iter max_iterdef fit(self, x, y):np.random.seed(self.seed)self.w np.random.normal…

视频汇聚平台EasyCVR安防监控视频汇聚平台的FLV视频流在VLC中无法播放的问题解决方案

众所周知&#xff0c;TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入&#xff0c;包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上&#xff0c;视频监控…

ESP8266获取网络时间 实时时钟

程序现象 一、用串口调试助手调试 1.发送指令ATRST重启模块使应用模式更改生效&#xff1b; 2.发送指令ATE0取消回显 3.使用串口发送指令ATCWMODE1设置模块Wi-Fi应用模式为Station模式&#xff1b; 4.发送指令ATCWJAP "ssid","pwd"连接AP&#xff1b; …

react-native-webview RN和html双向通信

rn登录后得到的token需要传递给网页&#xff0c;js获取到的浏览器信息需要传递给rn RN Index.js: import React from react import { WebView } from react-native-webview import useList from ./useListexport default function Index(props) {const { uri, jsCode, webVie…