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
查看评论