ES6基础知识总结3----call()、apply()、bind() 、set()去重以及类的基础

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();

今日已更新,每天更新

猜你喜欢

转载自blog.csdn.net/qq_45891136/article/details/107964689