学习汇总2

1.数组的操作方法
1扁平化
多层数组变一层 flat
reduce方法//数组去重

var arr = [1, 2, 3, 4, 5];
sum = arr.reduce(function(prev, cur, index, arr) {
console.log(prevres, cur, index);
return prevres + cur;
},0)
如果没有初始值prev是数组第一项,cur是第二项
如果有初始值0prev是0cur是第一项
console.log(arr, sum);
[1,2,3,4,5] 15
参数
prev: 第一项的值或上一次叠加的结果值
cur: 当前会参与叠加的项
index: 当前值的索引
arr: 数组本身

2.bfc 块级格式化上下文

父元素没有高度,子元素有高度浮动的情况下没有形成bfc

bfc创建方法,好处可以取消maigin塌陷,阻止被浮动覆盖
1.父元素一起浮动
2.父元素为绝对定位和固定定位
3.父元素display为inline-block flex
4.父元素overflow:hidden/最好

3.call apply bind
改变this指向

常用例子:
(1)

function eat(x,y){
console.log(x+y);
}
function drink(x,y){
console.log(x-y);
}
eat.call(drink,3,2);

输出:5
这个例子中的意思就是用 eat 来替换 drink,eat.call(drink,3,2) == eat(3,2) ,所以运行结果为:console.log(5);
注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。

(2)

function Animal(){
this.name="animal";
this.showName=function(){
console.log(this.name);
}
}
function Dog(){
this.name="dog";
}
var animal=new Animal();
var dog=new Dog();

animal.showName.call(dog);

输出:dog
在上面的代码中,我们可以看到Dog里并没有showName方法,那为什么(this.name)的值是dog呢?

关键就在于最后一段代码(animal.showName.call(dog)),意思是把animal的方法放到dog上执行,也可以说,把animal 的showName()方法放到 dog上来执行,所以this.name 应该是 dog。

类数组转化为数组:Array.prototype.slice.call(), [...argument]

4.es6 array.some array.every

查询数组中某个对象的值是不是某个

var data= array.every(f=>f.color==red)

posted @ 2021-06-29 14:37  木头小屋  阅读(30)  评论(0编辑  收藏  举报