最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

javascriptcall()方法详细讲解

来源:动视网 责编:小采 时间:2020-11-27 20:32:21
文档

javascriptcall()方法详细讲解

javascriptcall()方法详细讲解:call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. call()基本语法 fun.call(thisArg[, arg1[, arg2[, ...]]]) call()参数介绍: 参数名 参数说明 thisArg 在fun函数运行时指定的this值。需要注
推荐度:
导读javascriptcall()方法详细讲解:call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. call()基本语法 fun.call(thisArg[, arg1[, arg2[, ...]]]) call()参数介绍: 参数名 参数说明 thisArg 在fun函数运行时指定的this值。需要注


call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法.

call()基本语法

fun.call(thisArg[, arg1[, arg2[, ...]]])

call()参数介绍:

参数名 参数说明
thisArg fun函数运行时指定的this需要注意的是,指定的this值并不一定是该函数执行时真正的this值,如果这个函数处于非严格模式下,则指定为nullundefinedthis值会自动指向全局对象(浏览器中就是window对象),同时值为原始值(数字,字符串,布尔值)的this会指向该原始值的自动包装对象。
arg1, arg2, ... 指定的参数列表。

call()基本功能说明

当调用一个函数时,可以赋值一个不同的 this 对象。this 引用当前对象,即 call 方法的第一个参数。

通过 call 方法,你可以在一个对象上借用另一个对象上的方法,比如Object.prototype.toString.call([]),就是一个Array对象借用了Object对象上的方法。

call()实例一:使用call方法调用父构造函数

在一个子构造函数中,你可以通过调用父构造函数的 call 方法来实现继承类似于Java中的写法。下例中,使用 Food Toy 构造函数创建的对象实例都会拥有在 Product 构造函数中添加的 name 属性和 price 属性,但 category 属性是在各自的构造函数中定义的。

function Product(name, price) {
 this.name = name;
 this.price = price;

 if (price < 0) {
 throw RangeError('Cannot create product ' +
 this.name + ' with a negative price');
 }

 return this;
}

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

Food.prototype = Object.create(Product.prototype);
Food.prototype.constructor = Food; // Reset the constructor from Product to Food

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

Toy.prototype = Object.create(Product.prototype);
Toy.prototype.constructor = Toy; // Reset the constructor from Product to Toy

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

call()实例二:使用call方法调用匿名函数

在下例中的for循环体内,我们创建了一个匿名函数,然后通过调用该函数的call方法,将每个数组元素作为指定的this值执行了那个匿名函数。这个匿名函数的主要目的是给每个数组元素对象添加一个print方法,这个print方法可以打印出各元素在数组中的正确索引号。当然,这里不是必须得让数组元素作为this值传入那个匿名函数(普通参数就可以),目的是为了演示call的用法。

var animals = [
 {species: 'Lion', name: 'King'},
 {species: 'Whale', name: 'Fail'}
];

for (var i = 0; i < animals.length; i++) {
 (function (i) { 
 this.print = function () { 
 console.log('#' + i + ' ' + this.species + ': ' + this.name); 
 } 
 this.print();
 }).call(animals[i], i);
}

call()实例三:使用call方法调用匿名函数并且指定上下文的'this'

在下面的例子中,当调用 greet 方法的时候,该方法的 this 值会绑定到 i 对象。

function greet() {
 var reply = [this.person, 'Is An Awesome', this.role].join(' ');
 console.log(reply);
}

var i = {
 person: 'Douglas Crockford', role: 'Javascript Developer'
};

greet.call(i); // Douglas Crockford Is An Awesome Javascript Developer

注意:该方法的作用和apply()方法类似,只有一个区别,就是call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。

文档

javascriptcall()方法详细讲解

javascriptcall()方法详细讲解:call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. call()基本语法 fun.call(thisArg[, arg1[, arg2[, ...]]]) call()参数介绍: 参数名 参数说明 thisArg 在fun函数运行时指定的this值。需要注
推荐度:
标签: 方法 讲解 call
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top