call和apply(学习笔记)

大道之行,天下为公。这篇文章主要讲述call和apply(学习笔记)相关的知识,希望能为你提供帮助。
call语法:

function.call(thisArg, arg1, arg2, ...)

参数:
thisArg:可选的。表示this修改后指向色目标。(注意:如果该方法是在非严格模式下的函数,那么null和未定义将被全局对象替换,而原始值将被转换为对象。)
arg1:,arg2可选的。表示函数的参数列表,表示哪些函数的属性会继承过去。
例子:
function Product(name, price) { this.name = name; this.price = price; }function Food(name, price) { Product.call(this, name, price); this.category = ‘food‘; }function Toy(name, price) { Product.call(this, name, price); this.category = ‘toy‘; }var cheese = new Food(‘feta‘, 5); var fun = new Toy(‘robot‘, 40);

其他例子:
对匿名函数上使用call
call和apply(学习笔记)

文章图片
call和apply(学习笔记)

文章图片
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); }

匿名函数使用calld代码使用调用函数来为this指定上下文
call和apply(学习笔记)

文章图片
call和apply(学习笔记)

文章图片
1 function greet() { 2var reply = [this.person, ‘Is An Awesome‘, this.role].join(‘ ‘); 3console.log(reply); 4 } 5 6 var i = { 7person: ‘Douglas Crockford‘, role: ‘javascript Developer‘ 8 }; 9 10 greet.call(i); // Douglas Crockford Is An Awesome javascript Developer

调用函数为this指定上下文代码调用函数不指定参数(参考文中开头对参数的描述)
call和apply(学习笔记)

文章图片
call和apply(学习笔记)

文章图片
1 var sData = https://www.songbingjia.com/android/‘Wisen‘; 2 3 function display(){ 4console.log(‘sData value is %s ‘, this.sData); 5 } 6 7 display.call(); //sData value is Wisen

不指定参数  call和apply的区别只是.call(this,arg1,arg2,...)是参数列表.aoply(this,[arg1,arg2,...])是参数数组,因此不再介绍。
bind语法:
【call和apply(学习笔记)】再说,吃饭了

    推荐阅读