码迷,mamicode.com
首页 > 移动开发 > 详细

call/apply以及this指向的理解

时间:2018-10-09 20:35:09      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:数组   个数   return   对象   自己的   his   多个   app   第一个   

  javascript是面向对象的语言,Function也是一种对象,有自己的属性和方法。call和apply就是js函数自带方法,挂在Fucntion.prototype上。

  一般调用某函数时,直接“函数名(参数)”的写法即可,函数内部的this指向函数的调用者。

function add(a,b){
    console.log(this);
    return a+b;
}
add(1,2)   // 默认window调用,this指向window

var math = {
    add:function(a,b){
        console.log(this);
        return a+b;
    }
}
math.add(1,2)  // this指向math

  call和apply的作用是给函数重新指定调用者,指定this的指向:

var name = "WINDOW";
var someone = {
    name: "yource"
};

/** 一般写法 **/
function greet1(person) {
    var reply = "Hello, " + person.name;
    console.log(reply)
}

greet1(someone);  // Hello, yource

/** 使用call/apply **/
function greet2() {
    var reply = "Hello, " + this.name;
    console.log(reply)
}

greet2();  // Hello, WINDOW
greet2.call(someone);   // Hello, yource
greet2.apply(someone);  // Hello, yource

  call和apply的不同之处仅在于提供参数的方式:call使用一组参数列表,apply使用参数数组。

/*apply()方法*/
function.apply(thisObj[, argArray])

/*call()方法*/
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);

  apply最多只能有两个参数:调用者thisObj和一个数组argArray。call可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。

call/apply以及this指向的理解

标签:数组   个数   return   对象   自己的   his   多个   app   第一个   

原文地址:https://www.cnblogs.com/yangshifu/p/9761388.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!