js中call和apply的一些用法

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

  function Student(gender, name, age) {
        this.gender = gender;
        Person.call(this, name, age)
        // Person.apply(this, [name, age])
    }
    console.log(new Student('男', 'jonas', '18'))

用于构造函数的继承,接收的参数不同

    function sayHi() {
        console.log(this.firstName+" "+this.lastName+"你好!")
    }
    var person = {
        firstName: 'li',
        lastName: 'jonas'
    };

    sayHi.call(person)

用于改变this的指向,并且立即执行,这点和bind方法不同

    function sayHi() {
        console.log(this.firstName+" "+this.lastName+"你好!")
    }

    var person = {
        firstName: 'li',
        lastName: 'jonas'
    };

    var sayHello = sayHi.bind(person);
    sayHello()  

bind()方法会创建一个新函数,称为绑定函数,当调用这个绑定函数时,绑定函数会以创建它时传入 bind()方法的第一个参数作为 this,传入 bind() 方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数。

你可能感兴趣的:(js中call和apply的一些用法)