前端笔记

this(2)

2018-05-16  本文已影响0人  好奇男孩

1.Function.prototype.bind

bind,返回一个新函数,并且使函数内部的this为传入的第一个参数

var fn3 = obj1.fn.bind(obj1);
fn3();

2 使用call和apply设置this

call apply,调用一个函数,传入函数执行上下文及参数

fn.call(context, param1, param2...)

fn.apply(context, paramArray)

语法很简单,第一个参数都是希望设置的this对象,不同之处在于call方法接收参数列表,而apply接收参数数组

fn2.call(obj1);
fn2.apply(obj1);

arguments

在函数调用时,会自动在该函数内部生成一个名为 arguments的隐藏对象

该对象类似于数组,可以使用[]运算符获取函数调用时传递的实参

只有函数被调用时,arguments对象才会创建,未调用时其值为null

 function fn5(name, age){
     console.log(arguments);
     name = 'XXX';
     console.log(arguments);
     arguments[1] = 30;
     console.log(arguments);
 }
 fn5('Byron', 20);

函数的执行环境

三种变量

看个例子

function ClassA(){
    var a = 1; //私有变量,只有函数内部可以访问
    this.b = 2; //实例变量,只有实例可以访问
}

ClassA.c = 3; // 静态变量,也就是属性,类型访问

console.log(a); // error
console.log(ClassA.b) // undefined
console.log(ClassA.c) //3

var classa = new ClassA();
console.log(classa.a);//undefined
console.log(classa.b);// 2
console.log(classa.c);//undefined
上一篇 下一篇

猜你喜欢

热点阅读