zoukankan      html  css  js  c++  java
  • 研究一下apply和call和bind方法

    1、是用来干什么的?

    改变this指向!!!

    2、是什么?

    是一个方法,function原型链上的方法

    记住是某方法的call方法和apply方法

     3、怎么用?

     强行把a方法的this指向为call方法的第一个参数对象。

    那后面的参数是干嘛的?是传给调用call,apply方法的那个方法!

    apply方法的区别?  答:就是后面的参数要写成数组的形式

     4、具体的应用?

    一、数组拼接

    方法1:cancat

    arr1=arr1.cancat(arr2);

    方法2:push+...扩展运算符

    arr1.push(...arr2);

    方法3:push+apply

    arr1.push.apply(arr1,arr2);

    或者 [].push,apply(arr1,arr2);

    或者 Array.prototype.push.apply(arr1,arr2)

    只要能找到push方法就可以,因为最后我们都要将this指向转化为arr1

    为什么使用apply,不使用call,因为这里刚好是arr2是一个数组,符合要求,更方便。

    二、判断类型

    object.prototype.tostring(arr1);

    首先找到tostring方法,然后改变他的指向到要检测的东西

    三、找出最大值和最小值

    方法是math,max()和math,min()

    但是这个方法接收的是以,形式传入的,而不是数组

    所以调用apply方法,就可以传数组了

    Math.max.apply(null,arr1)

    最小值类似

    四、伪数组的转换

    slice方法

    参数(start,end)

    如果参数为空,则全部截取,相当于(0)

    一个参数,则从参数的地方开始到结尾处,参数为下标

    返回一个新数组

     五、构造继承

    让B继承于A,最好的方法就是让A在B中运行一遍

    但是考虑到可能A中可能有this指向,到B中运行时就可能导致运行时this指向不对,所以使用apply,或者call方法

     六、字符串的拆解,中间用‘ ,’号分开

    方法一:先用split()方法拆解,,再用join()方法连接起来

     split() 方法用于把一个字符串分割成字符串数组。

    如果把空字符串 ("") 用作 参数,那么 stringObject 中的每个字符之间都会被分割。

    join() 方法用于把数组中的所有元素放入一个字符串。

    参数,就是分隔符,不写参数默认用‘  ,’号分隔。

    方法二:call()

     七八:

     第七种,没听懂,没多大用

    第八种,了解,用途:兼容严格模式

  • 相关阅读:
    泛型接口(C# 编程指南) From MSDN
    不知道是不是心理作用,我怎么觉得在Fedora下写cnblogs比Windows下快。
    VS.NET 2005真是太好用了!
    写了个打字游戏,可是有问题(C#)
    C#多线程测试
    关于继承的一个小程序
    VS.NET 2008 试用
    基本排序算法及分析(二):冒泡排序
    基本排序算法及分析(三):shell排序
    [导入]一维数组输出杨辉三角形
  • 原文地址:https://www.cnblogs.com/carry-2017/p/11776542.html
Copyright © 2011-2022 走看看