1. 类的本质
class本质还是fucntion
我们可以简单的认为 类 就是构造函数的另一种写法
构造函数的几大特点:
- 构造函数有原型对象prototype
- 构造函数原型对象prototype里面有constructor 指向构造函数本身
- 构造函数可以通过原型对象添加方法
- 构造函数创建的实例对象有__proto__原型指向 构造函数的原型对象
经过验证,类就是构造函数的另外一种写法
新的class的写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已
所以ES6的类就是语法糖,语法糖就是一种便捷的写法。
2. ES5新增方法概述
ES5中新增的一些方法,可以很方便的操作数组或者字符串,这些方法主要包括:
- 数组方法
- 字符串方法
- 对象方法
2.1 数组方法
迭代(遍历)方法:forEach(),map(),filter(),some(),every();
foreach()方法
map()方法
map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
const array1 = [1, 4, 9, 16]; // pass a function to map const map1 = array1.map(x => x * 2); console.log(map1); // expected output: Array [2, 8, 18, 32] 复制代码
filter()方法
filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组它直接返回一个新数组
some()方法
用于检测数组中的元素是否满足指定条件。通俗点 查找数组中是否有满足条件的元素
注意它返回值是布尔值,如果查到这个元素,就返回true,如果查找不到就返回false。
如果找到第一个满足条件的元素,则终止循环,不再继续查找。
every()方法
every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
注意:若收到一个空数组,此方法在一切情况下都会返回 true。
const isBelowThreshold = (currentValue) => currentValue < 40; const array1 = [1, 30, 39, 29, 10, 13]; console.log(array1.every(isBelowThreshold)); // expected output: true 复制代码
注意:
foreach和some的区别
- 在foreach里面 return 不会终止迭代
- 在some里面遇到return 就会终止迭代,效率更高
- 在filter里面return不会终止迭代
2.2 字符串方法
trim()方法会从一个字符串的两端删除空白符
str.trim() 复制代码
trim()方法并不影响原字符串本身,它返回的是一个新的字符串
var str = " chengzi " var str1 = str.trim() console.log(str1); 复制代码
注意:trim方法不会去掉中间的空格,它只会去掉两端的空格
2.4 对象方法
Object。defineProperty()定义对象中新属性或修改原有的属性
Object.defineProperty(obj,prop,descriptor) 复制代码
- obj:必需。目标对象
- prop:必需。需定义或修改的属性的名字
- descriptor:必需。目标属性所拥有的特性
第三个参数descriptor说明:以对象形式{}书写
- value:设置属性的值 默认的值undefined
- writable:值是否可以重写。true|false 默认为false
- enumerable:目标属性是否可以被枚举(遍历)。true|false 默认为false
- configurable:目标属性是否可以被删除或是否可以再次修改特性true|false 默认为false