this的使用

一。在全局环境里面永远值向window,普通函数的调用也指向window。

var name = "张三";
function fn(){
  var name = "李四";
  console.log(this); // window;
  console.log(this.name); // 张三
}
fn();

二。作为对象调用时,则指向对象。没有调用则取向于最终调用的对象。

var name = 'Jane';
var person = {
    name: 'Abby',
    sayName: function() {
           console.log(this.name);
	}
};
var sayNameWin = person.sayName; // 该变量为全局变量,所以指向window;

person.sayName(); //Abby
sayNameWin(); //Jane   作为 window 的方法被调用的

三。当多层调用时,this指向调用他的上一级。没有调用则指向最终的对象

var name = 'Jane';
var person = {
    name: 'Abby',
    sayName: {
           name: "ken",
           fn: function() {
               console.log(this.name);
             }
	}
};
var sayNameWin = person.sayName.fn;// 该变量为全局变量,所以指向window;
person.sayName.fn(); //Ken
sayNameWin(); //Jane   作为 window 的方法被调用的

四。作为构造函数使用时,this指向new出来的对象。

function Person(name) {
    this.name = name;
    console.log(this);  //Person {name: "Abby"}
}

var person = new Person('Abby');
console.log(person.name);  //Abby

五。作为call/apply/bind方法调用,则指向传入的值。

var person = {
    name: 'Abby'
};
function fn() {
    console.log(this); //Object {name: "Abby"}
    console.log(this.name); //Abby
}

fn.call(person); // 三个函数的指向是一样的。 

 

上一篇: 闭包
下一篇: ES6基础(1)
黄祚敏
博客等级 码龄10年 22粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值