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

首頁 > 語言 > JavaScript > 正文

JS中call和apply函數用法實例分析

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

本文實例講述了JS中call和apply函數用法。分享給大家供大家參考,具體如下:

call 函數

語法

obj.call(thisObj,arg[,arg2[,arg3[,...agr]]]);

簡介

thisObj繼承obj的屬性和方法(obj原型鏈上的屬性和方法不能被繼承),后面的參數會當成obj的參數安裝順序傳遞進去。

示例

function animal(type,nickname){    this.type = type;    this.nickname = nickname;    this.sayHello = function(){      return 'hello';    }}function cat(name,type,nickname){    this.name = name;    //cat繼承animal    animal.call(this,type,nickname);}console.log(new cat('wsscat','cut','tom'));/*cat { name: 'wsscat', type: 'cut', nickname: 'tom', sayHello: [Function] }*/

apply 函數

語法

obj.apply(this[,argArray]);

簡介

apply和call的作用差不多,都可以用來繼承,區別在與apply只有兩個參數,第二個參數必須是數組或者arguments對象。否則會報TypeError錯誤。如果繼承的對象obj有多個參數,則會吧argArray的參數依次對應obj的每個參數。

示例

function animal(type,nickname){    this.type = type;    this.nickname = nickname;    this.syaHello = function(){      return 'hello';    }}function cat(name,type,nickname){    this.name = name;    animal.apply(this,arguments);}console.log(new cat('wsscat','cut','tom'));/*cat { name: 'wsscat', type: 'wsscat', nickname: 'cut', syaHello: [Function] }*/

總結

callapply在功能是相同的。

相同點在于都是用于對象的繼承,第一個參數都是thisObj.

不同點在于call可以有多個參數,從第二個參數開始往后的參數會依次傳給被繼承的對象做參數。apply只有兩個參數,第二個參數必須是數組類型或者arguments對象類型,而且他會把數組中的元素依次傳遞給被繼承的對象做參數。

通過以上幾點,我們可以得到如果被繼承的對象只有一個參數的可以使用call,如果被繼承的對象有多個參數的,建議使用apply.

補充

js中可以實現多繼承,只需要調用多次call或apply即可。如:

function animal(type,nickname){    this.type = type;    this.nickname = nickname;    this.syaHello = function(){      return 'hello';    }}function wscat(name,age){    this.name = name;    this.age = age;    this.sayMe = function(){      return 'my name:' + this.name + ', age:' + this.age;    }}function cat(name,age,type,nickname){    //第一種使用call    animal.call(this,type,nickname);    wscat.call(this,name,age);    //第二種使用apply    //animal.apply(this,[type,nickname]);    //wscat.apply(this,[name,age]);}console.log(new cat('wscat',2,'cat','tom');/*cat { type: 'cat', nickname: 'tom', syaHello: [Function], name: 'wscat', age: 2, sayMe: [Function] }*/            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 尚志市| 永福县| 田阳县| 宁乡县| 肇东市| 金湖县| 安达市| 德昌县| 威海市| 大连市| 浙江省| 徐闻县| 特克斯县| 元阳县| 永安市| 儋州市| 黑河市| 枣强县| 凤翔县| 图木舒克市| 皋兰县| 平罗县| 彰化市| 馆陶县| 潢川县| 阜新市| 乐东| 栾川县| 时尚| 广宁县| 青岛市| 白玉县| 高雄县| 松江区| 竹溪县| 南汇区| 紫阳县| 德阳市| 上杭县| 白水县| 新化县|