国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js中call()和apply()改變指針問題的講解

2019-11-19 12:16:34
字體:
來源:轉載
供稿:網友

1. 每個函數都包含兩個非繼承而來的方法:call()方法和apply()方法。(天生的)

2. 相同點:這兩個方法的作用是一樣的。

都是在特定的作用域中調用函數,等于設置函數體內this對象的值,以擴充函數賴以運行的作用域。

一般來說,this總是指向調用某個方法的對象,但是使用call()和apply()方法時,就會改變this的指向。

call有兩個妙用:

  •           1: 繼承。
  •           2: 修改函數運行時的this指針。

區(qū)別:call和apply的區(qū)別在于call的第二個參數可以是任意類型,而apply的第二個參數必須是數組或者arguments

<script>  //一般來說,this總是指向調用某個方法的對象,但是使用call()和apply()方法時,就會改變this的指向。  /*  call方法:  語法:call(thisObj,arg1,arg2,……,argN)  定義:調用一個對象的一個方法,以另一個對象替換當前對象  參數    thisObj;可選項,將被用作當前對象的對象    arg1,arg2,……,argN;可選項,將被傳遞方法參數序列  說明    call方法可以用來代替另一個對象調用一個方法。call方法可將一個函數的對象上下文從初始的上下文改變?yōu)橛衪hisObj指定的新對象。    如果沒有提供thisObj參數,那么Global對象被用作thisObj  */  /*  apply方法:  語法:apply(thisObj,[arg1,arg2,……,argN])  定義:應用某一個對象的一個方法,用另一個對象替換當前對象  */  //區(qū)別:call和apply的區(qū)別在于call的第二個參數可以是任意類型,而apply的第二個參數必須是數組或者arguments  //1.  function add(a,b) {    console.log(a+b);  }  function sub(a,b) {    console.log(a-b);  }  add.call(sub,3,1);//用add來替換sub,add.call(sub,3,1)==add(3,1),結果是console.log(4);  //2.  function Animal(){    this.name="Animal";    this.showName=function(){      alert(this.name);    }  }  function Cat(){    this.name="Cat";  }  var animal=new Animal();  var cat=new Cat();  animal.showName.call(cat);  // 通過call或者apply方法,將原本屬于Animal對象的showName()方法交給對象cat來使用。結果為alert("Cat");  //3.  function Animal(name){    this.name=name;    this.showName=function(){    alert(this.name);    }  }  function Cat(name){    Animal.call(this,name);  }  var cat=new Cat("Black Cat");  cat.showName();  //Animal.call(this)的意思是使用Animal對象代替this對象,那么Cat中就有了Animal的所有方法和屬性了,Cat對象就能直接調用Animal的方法和屬性了。  //4.  function Class10(){    this.showSub=function(a,b){      alert(a-b);    }  }  function Class11(){    this.showAdd=function(a,b){      alert(a+b);    }  }  function Class2(){    Class10.call(this);    Class11.call(this);  }  //使用兩個call就實現(xiàn)多繼承了。</script>

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 湟中县| 乌兰浩特市| 灵丘县| 荔浦县| 姜堰市| 班戈县| 夏邑县| 清水县| 葵青区| 额敏县| 抚顺市| 伊春市| 宁河县| 廊坊市| 贵南县| 广元市| 尉犁县| 阳西县| 济阳县| 林周县| 新干县| 泸水县| 枞阳县| 吴川市| 新平| 安达市| 日土县| 萨迦县| 饶阳县| 姚安县| 库车县| 水富县| 板桥市| 永城市| 通州市| 长子县| 邛崃市| 泸溪县| 泰兴市| 延安市| 比如县|