长风破浪会有时
直挂云帆济沧海

js中call()和apply()的区别

function father(name, age) {
    this.name = name;
    this.age= age;
  }
function child1(name, age) {
    father.call(this, name, age);
    this.category = 'child1';
  }
function child2(name, age) {
    father.apply(this, [name, age]);
    this.category = 'child2';
  }
var first= new child1('one', 11);
var second= new child2('two', 22);
console.log(first.category,first.name,first.age) // child1,one,11
console.log(second.category ,second.name,second.age) //child2,two,22

call()跟apply()都是继承父函数的一个方法。call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。

es5的继承为

function Person(name,age){
  this.name=name  this.age=age
 }
function Student(name,age,grade){
  Person.call(this,name,age);
  this.grade=grade;
 }
 // Object.create() 方法是用来创建一个新的对象,该对象的原型指向括号里面的参数
 Student.prototype=Object.create(Person.prototype)
 // 上面的这条语句是说,创建一个新的对象,该对象的原型指向Person.prototype,并将它赋值给Student.prototype

es6的继承为


class A{
    
}
class B exteds A{
    
}
赞(1)
未经允许不得转载:阿锋哥前端开发经验分享 » js中call()和apply()的区别
分享到: 更多 (0)

几百块就能做营销型企业网站?

查看详情