小言_互联网的博客

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

352人阅读  评论(0)

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()的值。


转载:https://blog.csdn.net/weixin_44763794/article/details/107965947
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场