麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

Javascript call和apply區別及使用方法

2019-11-20 21:41:57
字體:
來源:轉載
供稿:網友

一、方法的定義
call方法:
語法:fun.call(thisArg[, arg1[, arg2[, ...]]])
定義:調用一個對象的一個方法,以另一個對象替換當前對象。
說明:
call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisArg 指定的新對象。
如果沒有提供 thisArg參數,那么 Global 對象被用作 thisArg。

apply方法:
語法:fun.apply(thisArg[, argsArray])
定義:應用某一對象的一個方法,用另一個對象替換當前對象。
說明:
如果 argArray 不是一個有效的數組或者不是 arguments 對象,那么將導致一個 TypeError。
如果沒有提供 argArray 和 thisArg 任何一個參數,那么 Global 對象將被用作 thisArg, 并且無法被傳遞任何參數。

二、兩者區別
兩個方法基本區別在于傳參不同
2.1、call方法:

復制代碼 代碼如下:

function Product(name, price) {
this.name = name;
this.price = price;
if (price < 0)
throw RangeError('Cannot create product "' + name + '" with a negative price');
return this;
}

function Food(name, price) {
Product.call(this, name, price);
this.category = 'food';
}
Food.prototype = new Product();

function Toy(name, price) {
Product.call(this, name, price);
this.category = 'toy';
}
Toy.prototype = new Product();

var cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);


2.2、apply方法:
復制代碼 代碼如下:

function Product(name, price) {
this.name = name;
this.price = price;
if (price < 0)
throw RangeError('Cannot create product "' + name + '" with a negative price');
return this;
}

function Food(name, price) {
Product.apply(this, arguments);
this.category = 'food';
}
Food.prototype = new Product();

function Toy(name, price) {
Product.apply(this, arguments);
this.category = 'toy';
}
Toy.prototype = new Product();

var cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);


三、作用實例

3.1、類的繼承

復制代碼 代碼如下:

function Person(name,age){
this.name = name;
this.age=age;
this.alertName = function(){
alert(this.name);
}
this.alertAge = function(){
alert(this.age);
}
}

function webDever(name,age,sex){
Person.call(this,name,age);
this.sex=sex;
this.alertSex = function(){
alert(this.sex);
}
}

var test= new webDever(“設計蜂巢”,24,”男”);
test.alertName();//設計蜂巢
test.alertAge();//24
test.alertSex();//男


3.2、回調函數
復制代碼 代碼如下:

function Album(id, title, owner_id) {
this.id = id;
this.name = title;
this.owner_id = owner_id;
};
Album.prototype.get_owner = function (callback) {
var self = this;
$.get(‘/owners/' + this.owner_id, function (data) {
callback && callback.call(self, data.name);
});
};
var album = new Album(1, ‘設計蜂巢', 2);
album.get_owner(function (owner) {
alert(‘The album' + this.name + ‘ belongs to ‘ + owner);
});

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级免费| 久久精品一区二区三区四区五区 | 国产又粗又爽又深的免费视频 | 久久久久久久久久久久久久久伊免 | 最新一区二区三区 | 狠狠操精品视频 | 免费国产在线视频 | 久久蜜桃精品一区二区三区综合网 | av电影免费在线看 | 久久国产精品二国产精品中国洋人 | 在线高清中文字幕 | 午夜生活理论片 | 免费亚洲视频在线观看 | 羞羞视频一区二区 | 亚洲免费在线看 | 91丝袜| 久久蜜桃香蕉精品一区二区三区 | 特片网久久 | 91久久久国产精品 | 大胆在线日本aⅴ免费视频 美国黄色毛片女人性生活片 | 国产成人精品自拍视频 | 免费高潮在线国 | 久久人人做| 欧美精品一区二区三区在线 | 久久久久久久亚洲精品 | 午夜视 | 国产亚洲精品久久久久5区 日韩一级片一区二区三区 国产精品久久久久av | 精品三区视频 | 欧美中文字幕一区二区三区亚洲 | 男人的天堂毛片 | 精国产品一区二区三区四季综 | 免费欧美一级视频 | 欧美成年人在线视频 | sesee99 | 99在线热播精品免费 | 九九精品在线 | 免费一级特黄做受大片 | 成人三级在线播放 | 免费一级在线视频 | 91在线视频在线观看 | 日本黄色免费观看视频 |