JS 构造函数相关 基本语法:function 函数名 (){ //函数名首字母大写(规范) this.属性名 = 值 //值可以传参 } 函数名.portotype.方法名() = function(){} //添加公共方法,prototype为原型对象,这种方式添加方法,实例对象在调用方法时不会额外开新的内存空间,节省资源 实例对象.porto 指向原型对象,一级一级往上形成原型链,也是JS成员查找的方法 函数名.portotype.consturctor = 函数本身 //指回自己
构造函数A继承构造函数B,组合继承的方式 1.继承属性 在构造函数B中使用 A.call(A里面的This改变指向此参数,传递的B里面的参数1,参数2,…) 2.继承方法 用B.prototype指向A的实例对象,即: B.prototype = new A //这样B的方法不会影响A的,因为原型链的存在,所以B能使用A的方法,即继承方法
数组相关 ES5中的新方法: 1.循环遍历forEach() arr.forEach(function(每个值,每个的索引,数组本身){ console.log(’’) }) 2.筛选filter() //返回的是一个新数组,不会影响到原来的数组 let newArr = arr.fiter(function(每个值,每个的索引,数组本身){ return 筛选的条件 }) 3.查找是否有满足条件的元素some() //有的话返回true,没有返回false,而且找到一个满足条件的就不会继续查找,终止循环 let newArr = arr.some(function(每个值,每个的索引,数组本身){ return 筛选的条件 })
字符串相关 去掉字符串两边的空格 str.trim()
对象相关 1.获取一个对象所有的属性并返回一个属性名组成的数组,效果类似for…in Object.keys(obj) 2.定义对象中新属性或修改原有属性 Object.defineProperty(obj,prop,descriptor) //(要更改的对象,这个对象的属性名,属性值)三个参数一个也不能省 descriptor要以对象的形式书写{ } 格式: Object.defineProperty(obj,prop,{ value:值 设置属性的值 writable:true | false 默认为false,确定目标属性是否能更改,一些重要的不能改的属性会用到 })