国产探花免费观看_亚洲丰满少妇自慰呻吟_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] }*/            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 德化县| 九龙城区| 湘阴县| 洛阳市| 盈江县| 大宁县| 和林格尔县| 德格县| 洛川县| 敖汉旗| 无极县| 田林县| 沙雅县| 巩留县| 肇州县| 永平县| 宜阳县| 安丘市| 东乌珠穆沁旗| 夹江县| 沧源| 吉木乃县| 德阳市| 承德市| 巴楚县| 黑河市| 苍梧县| 兴安盟| 县级市| 壤塘县| 东莞市| 黔东| 平山县| 仙游县| 商城县| 乌拉特后旗| 辽中县| 汝州市| 余干县| 嘉兴市| 武定县|