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

首頁 > 語言 > JavaScript > 正文

Js apply方法詳解

2024-05-06 15:11:23
字體:
來源:轉載
供稿:網友

我在一開始看到javascript的函數apply和call時,非常的模糊,看也看不懂,最近在網上看到一些文章對apply方法和call的一些示例,總算是看的有點眉目了,在這里我做如下筆記,希望和大家分享..  如有什么不對的或者說法不明確的地方希望讀者多多提一些意見,以便共同提高.. 

主要我是要解決一下幾個問題: 

1.apply和call的區別在哪里 

2.什么情況下用apply,什么情況下用call 

3.apply的其他巧妙用法(一般在什么情況下可以使用apply) 

我首先從網上查到關于apply和call的定義,然后用示例來解釋這兩個方法的意思和如何去用. 

apply:方法能劫持另外一個對象的方法,繼承另外一個對象的屬性. 

Function.apply(obj,args)方法能接收兩個參數 

obj:這個對象將代替Function類里this對象 

args:這個是數組,它將作為參數傳給Function(args-->arguments) 

call:和apply的意思一樣,只不過是參數列表不一樣. 

Function.call(obj,[param1[,param2[,…[,paramN]]]]) 

obj:這個對象將代替Function類里this對象 

params:這個是一個參數列表 

1.apply示例: 

<script type="text/javascript">  /*定義一個人類*/  function Person(name,age) {  this.name=name; this.age=age;  }  /*定義一個學生類*/  functionStudent(name,age,grade) {    Person.apply(this,arguments); this.grade=grade;  }  //創建一個學生類  var student=new Student("qian",21,"一年級");  //測試  alert("name:"+student.name+"/n"+"age:"+student.age+"/n"+"grade:"+student.grade);  //大家可以看到測試結果name:qian age:21 grade:一年級  //學生類里面我沒有給name和age屬性賦值啊,為什么又存在這兩個屬性的值呢,這個就是apply的神奇之處.  </script>

分析: Person.apply(this,arguments); 

this:在創建對象在這個時候代表的是student 

arguments:是一個數組,也就是[“qian”,”21”,”一年級”]; 

也就是通俗一點講就是:用student去執行Person這個類里面的內容,在Person這個類里面存在this.name等之類的語句,這樣就將屬性創建到了student對象里面 

2.call示例 

在Studen函數里面可以將apply中修改成如下: 

Person.call(this,name,age); 

這樣就ok了 

3.什么情況下用apply,什么情況下用call 

在給對象參數的情況下,如果參數的形式是數組的時候,比如apply示例里面傳遞了參數arguments,這個參數是數組類型,并且在調用Person的時候參數的列表是對應一致的(也就是Person和Student的參數列表前兩位是一致的) 就可以采用 apply , 如果我的Person的參數列表是這樣的(age,name),而Student的參數列表是(name,age,grade),這樣就可以用call來實現了,也就是直接指定參數列表對應值的位置(Person.call(this,age,name,grade)); 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 祁门县| 邹城市| 抚顺市| 福安市| 肇州县| 广元市| 临颍县| 夏邑县| 丹寨县| 腾冲县| 通州市| 手机| 海宁市| 淳安县| 松江区| 泸溪县| 营山县| 乌兰察布市| 博野县| 军事| 五指山市| 平泉县| 尤溪县| 周至县| 潜江市| 龙陵县| 大城县| 朝阳市| 丰宁| 北宁市| 中西区| 横峰县| 万全县| 神木县| 全州县| 遂昌县| 成都市| 隆昌县| 昭通市| 双峰县| 胶州市|