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,确定目标属性是否能更改,一些重要的不能改的属性会用到
})