call()、apply()、bind()的用法实例
- call()
定义:调用对象的一个方法,用另一个对象替换当前对象
//用call方式求数组最小值
//第一个参数冒充this指向,没有可填null,第二个参数是传递的值
var arr1 = Math.min.apply(null,arr);
console.log(arr1);
括号内第一个参数冒充this指向,没有可填null,第二个参数是传递的值。
- apply()
定义:调用对象的一个方法,用另一个对象替换当前对象
//用apply方式求数组最大值
//第一个参数冒充this指向,没有可填null,第二个参数是传递的值
var arr1 = Math.max.apply(null,...arr);//...arr表示解析数组,使之一个个的传进去
console.log(arr1);
括号内第一个参数冒充this指向,没有可填null,第二个参数是传递的值。
其中call和apply的区别在于括号内的第二个参数,call的第二个参数可传入数组,而apply的第二个参数只能一个个传
- bind()
定义:创建一个新的函数,并传入this
var name = 'mumu';
var age = 18;
function say(a,b){
console.log(`大家好,我的名字是${this.name},今年${this.age}岁了`)
console.log(a,b,a+b)
}
var nsay = say.bind({name:'lh',age:18},10);
// say通过bind创建一个新的函数 this为bind第一个参数,a的值是10
nsay(7);//调用创建
bind()是创建一个新的函数,所以需要从新调用
- set()
定义:一个不重复的数组,可实现数组的去重。
set()方法:添加 add()
删除 delete()
获取长度 size
遍历 for of
转换为数组 Array.from() 或[…]
是否有 has()
var s = new Set([1,3,1,3,5,7]);
s.add(9);
console.log(s);
//添加
s.delete(1);
console.log(s);
//删除
for(let i of s){
console.log(i)
}
//遍历
console.log('size:',s.size);
//长度
console.log('是否有5',s.has(5));
//是否有
- map()
定义:类似于对象。
与对象区别:
键名可以是任意对象,对象:键名只能是 字符串 或者 symbol符号
map是有序,对象:按默认排序
使用方法:
var obj = new Map([['a','good'],[b,'student'],[1,'best']]);//键值可不为字符串,如b,1
// console.log(obj);
- Symbol()
定义:符号 唯一 常用于对象的key。
var s1 = Symbol('blue');
var obj = {[s1]:'mumu'};
obj[s1];//获取s1得值
Symbol.for('blue') == Symbol.for('blue'); //true
Symbol('blue') == Symbol('blue'); //false
-
for of 遍历
默认遍历是val
var arr = ['我爱','我的','祖国'];
默认遍历是val
for(let i of arr){
console.log(i)
}
键名的集合
for(let key of arr.keys()){
console.log(key)
}
键值的集合
for(let val of arr.values()){
console.log(val)
}
entries 键与值得集合
for(let [key,val] of arr.entries()){
console.log(key,val)
}
类的创建
类:创建对象的一个模板
实例:是被类创建的对象,一个类可以创建多个实例
class Animal{
constructor(name){
this.name = name;
//this类的实例
}
running(){
console.log('我会跑会跳')
}
}
继承类
class Dog extends Animal{
constructor(name){
super(name);//调用父类得构造函数
}
bark(){
console.log('汪汪汪')
}
}
var a1 = new Dog('大黄');//创建叫大黄的Dog
a1.bark();//调用叫的方法
var a2 = new Dog('旺财');
a1.bark();
今日已更新,每天更新