使用 sort() 对数组 [3, 15, 8, 29, 102, 22] 进行排序,输出结果
[ 102, 15, 22, 29, 3, 8 ]
我觉得对于一个js的方法,这里指数组方法,一般要记住以下几个方面
- 参数,有几个,几个必选,几个可选,用途是什么
- 返回值
- 是否修改原有数组
语法
arrayObject.sort(sortby)
参数
sortby 可选。规定排序顺序。必须是函数。
返回值 是否修改原有数组
没有返回,直接修改原数组
无参数怎么排序
先把对象转成字符,再按照字符编码的顺序进行排序
使用场景
由小到大排序
[3, 15, 8, 29, 102, 22].sort((a,b) => {return a - b});
第 48 题:call 和 apply 的区别是什么,哪个性能更好一些
1,call()、apply()、bind() 都是用来重定义 this 这个对象的!
obj.myFun.call(db); // 德玛年龄 99
obj.myFun.apply(db); // 德玛年龄 99
obj.myFun.bind(db)(); // 德玛年龄 99
以上出了 bind 方法后面多了个 () 外 ,结果返回都一致!
由此得出结论,bind 返回的是一个新的函数,你必须调用它才会被执行。
2,对比call 、bind 、 apply 传参情况下
obj.myFun.call(db,'成都','上海'); // 德玛 年龄 99 来自 成都去往上海
obj.myFun.apply(db,['成都','上海']); // 德玛 年龄 99 来自 成都去往上海
obj.myFun.bind(db,'成都','上海')(); // 德玛 年龄 99 来自 成都去往上海
obj.myFun.bind(db,['成都','上海'])(); // 德玛 年龄 99 来自 成都, 上海去往 undefined
所以呢,区别就在于 参数 call是有一个写一个 而 apply是需要将参数打包成一个数组
值得一提的是 call其实参数也可以是数组
let params = [1,2,3,4]
xx.call(obj, ...params)
在有了es6之后 数组打开可以更加地方便