call()、apply()、bind()的用法实例
//用call方式求数组最小值
//第一个参数冒充this指向,没有可填null,第二个参数是传递的值
var arr1 = Math.min.apply(null,arr);
console.log(arr1);
括号内第一个参数冒充this指向,没有可填null,第二个参数是传递的值。
//用apply方式求数组最大值
//第一个参数冒充this指向,没有可填null,第二个参数是传递的值
var arr1 = Math.max.apply(null,...arr);//...arr表示解析数组,使之一个个的传进去
console.log(arr1);
括号内第一个参数冒充this指向,没有可填null,第二个参数是传递的值。
其中call和apply的区别在于括号内的第二个参数,call的第二个参数可传入数组,而apply的第二个参数只能一个个传
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()是创建一个新的函数,所以需要从新调用
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));
//是否有
使用方法:
var obj = new Map([['a','good'],[b,'student'],[1,'best']]);//键值可不为字符串,如b,1
// console.log(obj);
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();
今日已更新,每天更新