当前位置: 首页 > article >正文

Javascript引用数据类型详解

数组(Array)
  • 数组中的元素的类型可以不同
创建数组
let fruits = ['apple', 'banana', 'orange'];
let numbers = new Array(1, 2, 3, 4, 5);
数组的属性,方法
  • length : 数组的长度,可以变化
let fruits = ['apple', 'banana', 'orange'];
console.log(fruits.length); // 输出: 3

//访问"越界",也不会报错
var array = ["a", "b", "c"];  
array[4] = 1;  //改变类型,也不会报错
alert(array[4]);//1
  • slice(start,end) : 截取元素,包头不包尾

  • sort() : 排序

  • push():尾插一个或多个元素, 并返回插入后的长度。

  • pop():删除并返回数组末尾的元素。

  • forEach():遍历有值的元素,undefined除外.

fruits.forEach((fruit) => {
    console.log(fruit);
});
  • splice(): 删除元素,返回一个数组,包含所有被删除的元素.
array.splice(1, 4);//从1索引位置开始,删除4个元素.
  • join():将数组元素连接成一个字符串。
console.log(fruits.join(', ')); 
  • indexOf() : 获取元素的索引

  • reverse(): 反转数组

  • concat() : 在数组后追加数组,不改变原来的数组

let arr=[1,9,3,4];  
arr.concat([6,6,6]);  
//仍然输出1,9,3,4
 for (const number of arr) {  
   console.log(number);  
 }
  • unshift() : 头插

  • shift() : 头删

函数
声明:

最常用声明:

function functionName(参数1,参数2...){

}
  • 形参不需要类型,返回值也不需要类型,直接return即可`

使用函数表达式声明函数:

var add = function(x, y) {
    return x + y;
};

使用箭头函数:

var multiply = (a, b) => a * b;
函数的作用域
  • 在函数内部定义的变量,无法在函数外部访问。
function example() {
    let l = "s";
    console.log(l); // 输出: I'm local!
}
example();
// console.log(l); // 报错: localVar is not defined
对象(Object):
var objectName={
属性名1: 属性值1,
属性名2: 属性值2,
属性名3: 属性值3,
函数名: function(形参列表){}
};
  • 调用属性: 对象名.属性名; 对象名.函数名( )

  • 可以动态的添加属性: 如 user.name = "Alice";

  • 对象中的所有键都是字符串, 值是任意对象检查对象是否直接拥有某个属性(而不是继承自原型链的属性)的方法 : person.hasOwnProperty("age"), 键名用引号包裹.

Set
  • 元素唯一,不会存储重复的值。
  • 可迭代,可以使用 forEachfor...of 遍历。
基本用法
let mySet = new Set();

mySet.add(1);
mySet.add(2);
mySet.add(2); //  不会添加重复的 2
mySet.add("Hello");
mySet.add({ name: "Alice" });

console.log(mySet); 
// Set(4) { 1, 2, 'Hello', { name: 'Alice' } }
常用方法
方法作用
add(value)添加
delete(value)删除指定值
has(value)检查是否包含该值
clear()清空set
size获取长度
遍历

forEach():

let set = new Set(["apple", "banana", "orange"]);

set.forEach(value => {
  console.log(value);
});
// apple
// banana
// orange

for...of:

for (let item of set) {
  console.log(item);
}
Map
  • 键值对存储(类似 Object)。
  • 键的类型不限,可以是 ObjectArray 等(Object 只能用 stringsymbol 作为键)。
基本用法
let myMap = new Map();

myMap.set("name", "Alice");
myMap.set(123, "Number key");
myMap.set({ a: 1 }, "Object key");

console.log(myMap);
// Map(3) { 'name' => 'Alice', 123 => 'Number key', { a: 1 } => 'Object key' }
常用方法
方法作用
set(key, value)添加键值对
get(key)根据key获取值
has(key)检查是否包含该键
delete(key)删除指定键
clear()清空所有键值对
size获取长度
遍历

forEach():

let map = new Map([
  ["name", "Alice"],
  ["age", 25],
]);

map.forEach((value, key) => {
  console.log(key, value);
});
// name Alice
// age 25

for...of:

for (let [key, value] of map) {
  console.log(key, value);
}
// name Alice
// age 25
日期对象Date
创建:

new:

  const now = new Date();

使用时间戳创建:

   const dateFromMilliseconds = new Date(1633072800000); // 例如,表示特定日期和时间

使用日期字符串:

  const dateFromString = new Date("2025-03-14T16:44:14");
    ```
 


##### 常用方法:

- 获取日期和时间:
    
    ```javascript
    const year = now.getFullYear(); // 获取年份
    const month = now.getMonth(); // 获取月份(0-11)
    const date = now.getDate(); // 获取日期(1-31)
    const hours = now.getHours(); // 获取小时(0-23)
    const minutes = now.getMinutes(); // 获取分钟(0-59)
    const seconds = now.getSeconds(); // 获取秒数(0-59)
    ```
    
- 设置日期和时间:
    
    ```javascript
    now.setFullYear(2026); // 设置年份为 2026 年
    now.setMonth(5); // 设置月份为六月
    now.setDate(20); // 设置日期为 20 日
    ```
    
- 格式化日期:
    
    ```javascript
    const dateString = now.toDateString(); // 获取可读的日期字符串
    const timeString = now.toTimeString(); // 获取可读的时间字符串
    ```
    





#### 继承

- 原型链:`st (实例) → smallStudent.prototype → Student.prototype → Object.prototype`

```JavaScript
"use strict";  
class Student {  
  constructor(name) {  
    this.name=name;  
  }  
  hello(){  
    return("hello!"+this.name);  
  }  
}  
//  
// let s=new Student("warren");  
//  
// s.hello();  
class smallStudent extends Student{  
  
}  
var st=new smallStudent("jim");  
console.log(st.hello());

http://www.kler.cn/a/592124.html

相关文章:

  • 深入解析 `SQL_SMALL_RESULT`:MySQL 的“小优化”大作用
  • Nginx 结合 NFS 共享的服务搭建、DNS 域名解析及安全加固(时间同步、防火墙)实验
  • 设计C语言的单片机接口
  • 【Golang】第五弹----函数
  • 关于解决新版本spring项目请求测试接口返回406的问题
  • 前端面试项目拷打
  • Feture常见实现类(FutureTask、CompletableFuture、ListenableFuture)对比
  • 从零开始构建一个简单的Web爬虫:Python实战教程
  • 基于Gradio实现的增删改查(CRUD)模板系统设计方案
  • 爬虫逆向:详细讲述iOS底层原理及机制
  • 智慧环保系统(源码+文档+讲解+演示)
  • 【Camera2 教程六】Camera2算法集成
  • Channel-wise Knowledge Distillation for Dense Prediction论文阅读和
  • 【GPT入门】第20课 langchain的function calling 初步体验
  • 4.3--入门知识扫盲,IPv4的头部报文解析,数据报分片,地址分类(包你看一遍全部记住)
  • 它,让机器人与HMI屏无缝对接
  • Prometheus 和 Grafana科普介绍
  • Unity特效动态合批问题
  • 8、vue2迁移Vue3
  • 详解c++的编译过程,如何从源文件到可执行文件到