ES5中给我们新增了一些方法,可以很方便的操作数组或者字符串,这些方法主要包括:数组方法、字符串方法、对象方法。

1. 数组方法

迭代(遍历)方法:forEach() 、map()、filter()、some()、every()

2. 对象方法

(1) Object.key()用于获取对象自身所有的属性

object.keys(obj)

效果类似for...in, 返回一个由属性名组成的数组。

// 用于获取对象自身所有属性
var obj = {
id: 1,
pname: '小米',
price: 1999,
num: 2000
};
Object.keys(obj);
console.log(Object.keys(obj)); // ['id', 'pname', 'price', 'num']

(2) Object.defineProperty()定义对象中新属性或者修改原来的属性

Object.defineProperty(obj, prop, descriptor);
  • obj: 必需。目标对象
  • prop: 必需。需定义或修改的属性的名字
  • descriptor: 必需。目标属性所拥有的的特性
// 用于获取对象自身所有属性
var obj = {
id: 1,
pname: '小米',
price: 1999,
};
// 以前的对象添加和修改属性的方法
// obj.num = 1000;
// obj.price = 99;
// 2. Object.defineProperty()定义新属性或修改原来的属性
Object.defineProperty(obj, 'num', {
value: 1000
});

3. let、const、var区别

  1. 使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。
  2. 使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。
  3. 使用const声明的是常量,在后面出现的代码中,不能再修改该常量的值。

4. 解构赋值

ES6中允许从数组中提取值,按照对应位置,对变量赋值。对象也可以实现解构。

数组解构:

let [a, b, c] = [1, 2, 3];
console.log(a); // a
console.log(b); // b
console.log(c); // c

对象解构:

对象结构允许我们使用变量的名字匹配对象的属性,匹配成功,将对象属性的值赋值给变量。

let person = {
name: 'zhangsan',
age: 20
};
let {name, age } = person;
console.log(name); // 'zhangsan'
console.log(age); // 20

5.箭头函数

ES6中新增的定义函数的方式

() => {}
const fn = () => {}

函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号

function sum(num1, num2) {
return num1 + num2;
}
const sum = (num1, num2) => num1 + num2;
const result = sum(10, 20);
console.log(result); // 30
// 箭头函数-面试题
// 对象不能产生作用域,say方法下的this指向window
var age = 100;
var obj = {
age: 20,
say: () => {
console.log(this.age);
}
}
obj.say(); // 100

6. 剩余参数

剩余参数语法允许我们将一个不定数量的参数,表示为一个数组

function sum (first, ...args) {
console.log(first); // 10
console.log(args); // [20, 30]
}
sum(10, 20, 30);

7. 扩展运算符

// 合并数组
let ary1 = [1, 2, 3];
let ary2 = [3, 4, 5];
let ary3 = [...ary1, ...ary2];
console.log(ary3); // [1, 2, 3, 3, 4, 5]

8.构造函数方法: Array.from( )

将类数组或可遍历对象转换成真正的数组

// 构造函数方法array.from
let arrayLike = {
'0': 1,
'1': 2,
'2': 3,
'length' : 3
}
let arr2 = Array.from(arrayLike, item => item * 2);
console.log(arr2); // [2, 4, 6]

9. 实例方法find()

用于找出第一个符合条件的数组成员,如果没有找到返回undefined

let ary = [{
id: 1,
name: '张三'
}, {
id: 2,
name: '李四'
}];
let target = ary.find((item, index) => item.id === 2);
console.log(target); // {id: 2, name: '李四'}

10.实例方法findIndex()

用于找出第一个符合条件的数组成员的位置, 如果没有找到返回-1

let ary = [1, 5, 10, 15];
let index = ary.findIndex((value, index) => value > 9);
console.log(index); // 2

11. 实例方法:includes()

表示某个数组是否包含给定的值,返回布尔值

[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false

12.模板字符串

模板字符串中可以解析变量

let name = '张三';
let sayHello = `hello, my name is ${name}`;
console.log(sayHello); // hello, my name is 张三

13.数据结构

ES6提供了新的数据结构set。它类似于数组,但是成员的值都是唯一的, 没有重复的值。

const s3 = new Set(["a","a","b","b"]);
console.log(s3)

ES5新增语法的更多相关文章

  1. 复习——高级语法对象原型,es5新增语法

    今天的开始进入了js的高级语法 我马上也要复习完了,之前学到闭包递归,就回去复习去了,复都复习这么久而且,复习的过程真的比学知识的过程难熬的多,只不过终于要复习完了,再来点es6的新语法马上就要步入v ...

  2. ECMAScript简介以及es6新增语法

    ECMAScript简介 ECMAScript与JavaScript的关系 ECMAScript是JavaScript语言的国际化标准,JavaScript是ECMAScript的实现.(前者是后者的 ...

  3. ES6构造函数class 和 ES5构造函数语法

    构造函数就是JavaScript程序定义好的函数,我们直接使用就可以,实际也是一种函数,构造函数专门用于生成定义对象,通过构造函数生成的对象,称为实例化对象 构造函数分为两种,一种是JavaScrip ...

  4. 4日6日--ES5新增数组方法

    forEach使用的函数调用,所以占内存比较大,不如定长for循环和迭代for循环 1.通过forEach将数组中的元素逐个表示出来(遍历方法,读取操作). 2.通过map将原数组中的元素进行算数运算 ...

  5. String方法,js中Array方法,ES5新增Array方法,以及jQuery中Array方法

    相关阅读:https://blog.csdn.net/u013185654/article/details/78498393 相关阅读:https://www.cnblogs.com/huangyin ...

  6. js数组定义和方法 (包含ES5新增数组方法)

    数组Array 1. 数组定义 一系列数据的集合成为数组.数组的元素可以为任何类型的数据(包括数组,函数等),每个元素之间用逗号隔开,数组格式:[1,2,3]. 2. 数组创建方式 (1) 字面量方法 ...

  7. ES5新增数组方法测试和字符串常见API测试

    首先是ES5新增数组方法测试: <!DOCTYPE html><html lang="en"><head> <meta charset=& ...

  8. ES5新增的数组方法

    ES5新增:(IE9级以上支持)1.forEach():遍历数组,无返回值,不改变原数组.2.map():遍历数组,返回一个新数组,不改变原数组.3.filter():过滤掉数组中不满足条件的值,返回 ...

  9. 学习笔记-es5新增的一些数组的API(不全)-字符串-字符串API(不全)

    ### es5新增的数组的api + indexOf() 搜索数组中的元素,并返回它所在的位置. arr.indexOf(str,index) 参数: str为要查找的字符串 index为开始查找的下 ...

  10. ES5新增数组的方法

    ES5新增数组的方法 ES5新增数组常见方法(indexOf/forEach/map/filter/some/every) .indexOf( data , start)  检测数组中是否存在指定数据 ...

随机推荐

  1. tomcat服务器报错

    看问题 报错信息里面说 tomcat目录下conf下的aaa.xml报错 根据目录找到aaa.xml发现aaa.xml里面是空的,删除了之后就不报错了 不知道为啥这个就会报错,以前也出现过没有解决,这 ...

  2. [CSP-S 2023] 密码锁

    题目描述 小 Y 有一把五个拨圈的密码锁.如图所示,每个拨圈上是从 \(0\) 到 \(9\) 的数字.每个拨圈都是从 \(0\) 到 \(9\) 的循环,即 \(9\) 拨动一个位置后可以变成 \( ...

  3. Javascript面向对象的程序设计 —— 创建自定义类型的7种方法

    Object构造函数或对象字面量都可以用来创建单个对象,但是使用这些方式用同一个接口创建很多对象,会产生大量的重复代码.为了解决这个问题,工厂模式的一种变体开始被使用.1.工厂模式工厂模式抽象了创建具 ...

  4. 使用cgroup控制内存

    关键文件 memory.limit_in_bytes memory.soft_limit_in_bytes memory.memsw.limit_in_bytes tasks cgroup.procs ...

  5. 从零玩转ShardingSphere分库分表 (概括)-shardingsphere1

    title: 从零玩转ShardingSphere分库分表 (概括) date: 2022-05-25 17:58:25.61 updated: 2022-08-22 22:59:02.624 url ...

  6. Rabbitmq从安装到简单入门

    1:Rabbitmq是什么? RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件). 它由以高性能.健壮以及可伸缩性出名的 Erlang 写成. 2:它的优点 ...

  7. 面试官:请列举 Spring 的事务会失效的场景

    在日常工作中,如果对 Spring 的事务管理功能使用不当,则会造成 Spring 事务不生效的问题.而针对 Spring 事务不生效的问题,也是在跳槽面试中被问的比较频繁的一个问题. 今天,我们就一 ...

  8. Llama2-Chinese项目:2.2-大语言模型词表扩充

      因为原生LLaMA对中文的支持很弱,一个中文汉子往往被切分成多个token,因此需要对其进行中文词表扩展.思路通常是在中文语料库上训练一个中文tokenizer模型,然后将中文tokenizer与 ...

  9. 神经网络基础篇:详解向量化逻辑回归(Vectorizing Logistic Regression)

    向量化逻辑回归 讨论如何实现逻辑回归的向量化计算.这样就能处理整个数据集,甚至不会用一个明确的for循环就能实现对于整个数据集梯度下降算法的优化 首先回顾一下逻辑回归的前向传播步骤.所以,如果有 \( ...

  10. 【玩转鲲鹏DevKit系列】何如快速迁移有源码应用

    本文分享自华为云社区<[玩转鲲鹏DevKit系列]何如快速迁移有源码应用>,作者:华为云社区精选 . 源码(也称源程序)是程序员编写的计算机程序的文本形式,不同的编程语言有不同的语法和规则 ...