ES6知识总结——call(),apply(),bind(),set()等方法的应用和ES6类和类的继承

call、bind、apply都是改变当前this指向的问题,但各自有各自的区别

  • apply()
    调用对象的一个方法,用另一个对象替换当前对象

实例:

var arr = [21,354,45,-98,76];
var min = Math.min.apply(null,arr);
console.log(min);

输出结果为:-98
括号内第一个参数冒充this指向,没有可填null,第二个参数是必须为数组。

  • call()
    调用对象的一个方法,用另一个对象替换当前对象

实例:

var arr = [21,354,45,-98,76];
var min = Math.min.call(null,...arr);
console.log(min);

输出结果为:-98
括号内第一个参数冒充this指向,没有可填null,第二个参数是为数组中的元素(单个参数)。

  • bind()
    会创建一个新函数。当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this,之后的一序列参数将会在传递的实参前传入作为它的参数。

实例:

var name = '毛毛';
var age = 21;
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);//调用创建

输出结果为:
大家好,我的名字是毛毛,今年21岁了
10 7 17

  • Set()
    定义:一个不重复的数组,可实现数组的去重。
方法写法
添加add()
获取长度size
删除delete()
是否含有has()
遍历for of
转换为数组Array.from()
var arr = [1,23,44,55,1,23,44,67,89];
var s = new Set(arr);
			
// 获取长度:size;
console.log(s.size)
			
			
// 是否含有has()
console.log(s.has(23))
			
// 添加add()
s.add(12)
console.log(s)
		
// 删除  delete()
s.delete(12)
console.log(s)
			
			
// 遍历for of
for(let i of s){
	console.log(i)
}

// 转换为数组  Array.from()	
arr = Array.from(s);
console.log(s);
  • Map() 键值对
    map 类似于对象,键名可以是任意对象,对象:键名只能是 字符或者 symbol符号map是有序了,对象:按默认排序
var map = new Map([["b",100],["a","某某某"],[2,"best"],[1,"good"]])
console.log(map);
  • Symbol()
    Symbol 符号 唯一常用于左右对象的key
s1 = Symbol("blue")
var obj = {[s1]:"mumu"}
Symbol.for("blue") ==   Symbol.for("blue")  True
Symbol("blue") == Symbol("blue") False

Symnbol()不相等,是唯一的;Symbol.for()可以相等。

  • for of遍历
var arr = ['我','爱','我','的','祖国'];
for(let item of arr){
	console.log(item)
}
for(let key of arr.keys()){
	console.log(key)
}
			
for(let val of arr.values()){
	console.log(val)
}
			
for(let [key,val] of arr.entries()){
	console.log(key,val)
}

定义:创建实例对象的一个模板。
创建一个动物类

class Animal{
	constructor(name) {
		this.name = name;
	}
	running(){
		console.log("我会走会跑");
	}
}
类的继承

例如:猫继承动物类:

class Cat extends Animal{
	constructor(name,age) {
		super(name);
		this.age = age;
	}
	bark(){
		console.log("喵喵喵")
	}
}
set() get()

含义:set get 当我们去设置或者 获取的对数据进行额外的操作,隐藏原本的数据直接操作。
特点:
1.set()和get()一般成对出现。
2 不能够直接赋值和设置已经存在的属性。

set Age(val){
	this.age = val;
}
get Age(){
	console.log("被GET到了")
	return this.age;
}

当对象调用Age()时,返回的时age()的值。

  • 52
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 33
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值