上下文对象

Author Avatar
Ninefire 6月 08, 2018
  • 在其它设备中阅读本文章
  • 解析器在调用函数时,每次都会向函数内部传递一个隐含的参数,这个参数就是this
  • this指向的是一个对象,这个对象称为函数执行的上下文对象。
  • 根据函数调用方式的不同,this会指向不同的对象。
    1. 以函数的形式调用时,this永远都是window(函数是window对象的方法)
    2. 以方法的形式调用时,this就是调用方法的那个对象
function fun(){
    console.log(this);
}

var obj = {
    say:fun
};

fun(); // this是window对象
obj.fun(); // this是obj对象
// 创建一个name变量
var name = "全局";

// 创建一个fun()函数
function fun(){
    console.log(this.name);
}

// 创建两个对象
var obj1 = {
    name:"对象1",
    sayName:fun
}
var obj1 = {
    name:"对象2",
    sayName:fun
}
fun(); // name:全局     相当于window.fun();
obj1.sayName(); // name:对象1
obj2.sayName(); // name:对象2

arguments

在调用函数时,浏览器每次都会传递进入两个隐含的参数:

  1. 函数的上下文对象this
  2. 封装实参的对象arguments
    • arguments是一个类数组对象,它也可以通过索引来操作数据,也可以获取长度
    • 在调用函数时,我们所传递的实参都会在arguments中保存
    • arguments.length可以获取实参的长度
    • 即使不定义形参,也可以通过arguments使用实参,arguments[0]表示第一个实参,arguments[1]表示第二个实参……
    • atguments有一个属性callee,对应当前正在指向的函数对象
function fun(){
    console.log(arguments instanceof Array); // false
    console.log(Array.isArray(arguments)); // false
    console.log(arguments.length); // 2
}

fun("hello", true);

如发现错误请联系我,谢谢你。
本文链接:http://ninefire.tk/JavaScript.basics/12.html