apply call bind 用法实例
- apply执行函数 对象冒充 参数数组
- call 执行函数 对象冒充 参数单个
- bind 创建函数 对象冒充 参数默认
// call 和apply 都是执行函数时 传入this对象冒充
// var arr=[1,32,3,4]
// var min=Math.min(...arr);
// var min=Math.min.call(null,...arr)
// var max=Math.max.apply(null,arr);
// alert(min);
// alert(max);
//bind 创建一个新的函数 并传入this
function say(a,b){
console.log(`大家好,我的名字${this.name},今年${this.age}`)
console.log(a,b,a+b);
}
var nsay=say.bind({name:'贝',age:12},12)
//say通过bind创建一个新的函数 this为bind第一个参数,a的值是12
set map symbol的用法
set特点是一个不重复数组,主要用于对数组去重
- 初始化 new Set
- 添加 add()
- 删除 delete()
- 获取长度 size
- 遍历 for of
- 转换为数组 Array.from()[…]
// var arr=[1,2,1,3,2,1,4,5];
// var s1=new Set(arr);
// arr=[...s1];
// arr=Array.from(s1);
// console.log(arr);
// var s=new Set([1,22,3,12,31,1,2,3]);
// console.log(s);
// console.log('size',s.size);
// console.log('是否有无',s.has(3));
// s.add(44);
// console.log(s);
// s.delete(1);
// console.log(s)
// for (let i of s){
// console.log(i);
// }
map类似于对象,但与对象又有区别主要区别在于:
- map键名可以是任意对象,而对象的键名只能是字符串或者symbol符号
- map是有序的 按默认排序
// 长度 size
// 添加 set
// 获取 get
// remove()
// 变量for of
var obj = {"b":100,"a":"贝","2":"best","1":"good"};
console.log(obj);
var map = new Map([["b",100],["a","贝"],[2,"best"],[1,"good"]])
console.log(map);
symbol 符号特点
- 主要不重复 唯一
- 常用于 作用对象的key
// 初始化 s1=symbol('blue')
// var obj={[s1]:"贝"};
// symbol.for('blue')==symbol.for('blue') true
// symbol('blue')==symbol('blue') False
for of的用法
var arr=["我爱","我的","祖国"];
//默认遍历是value
for (let item of arr){
console.log(item);
}
//keys 键名的集合
for (let key of arr.keys()){
console.log(key);
}
//value 值的集合
for (let val of arr.values()){
console.log(val);
}
//entries键与值的结合
for (let [key,val] of arr.entries()){
console.log(key,val);
}
类和继承(class和extends)
- 类定义 class 类名
- 初始化类 new 类名()
- 继承 class 类名 extends
- 访问控制 set(val)
get() - 调用父类构造函数 super()
- 静态方法 static
ES6面向对象写法:
class animals{
constructor(name) {
this.name=name;
}
running(){
console.log('我会走会跑,主人你在哪里')
}
}
ES6中面向对象实现类继承
class Dog extends animals{
constructor(name) {
super(name);
//this 类的实例
}
//构造函数
bark(){
console.log("汪汪汪")
}
}
var d1=new Dog("大黄");
var d2=new Dog("旺财");