js中call、apply、bind方法

来源:互联网 发布:sleep water 知乎 编辑:程序博客网 时间:2024/06/03 06:49

1、call方法()

详情:call方法

使用call方法调用父构造函数

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

使用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方法调用函数并且指定上下文的’this’

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);

2、apply方法()

详情:apply方法

    call方法和apply方法类似    区别:        call:接受若干个参数列表        apply:接受一个包含多个参数的数组

3、bind方法()

详情:bind方法