js中的this

编程语言中的this一直是变化莫测,让人捉摸不定,最后就被困住,沦陷了.....多么痛的领悟啊哭可是我们还是无法避开它,好吧,那就让我们把它细细地分析一番(知己知彼)吧。

全局作用域,在浏览器中,window既是通过Javascript访问浏览器窗口的一个接口,也是ECMAScript中的Global对象,这就意味着在全局作用域中定义的变量,函数都会变成window的属性和方法,所以在全局中变量,函数,对象中的this

var a = "mary";

console.log(window.a);    //Mary

function abc(){return this; }

alert(abc()===window);//true

这时的this指向window

当函数做为某个对象的方法进行调用时,this指向该对象

var object  = {

name : "my name",

getName : function(){

return function(){

return this.name;

};

}

};

alert(object.getName());//my name

对象原型链上的this

var o = {f:function(){return this.a+this.b;}}

var p = Object.create(o);

p.a = 1;

p.b = 2;

console.log(p.f());//3

通过Object.create()或者构造器实例化后的对象,会有prototype属性指针,该指针指向该实例对象的原型,即构造函数.prototype,原型默认的属性包括constructor和_porto_,constructor指向构造函数本身,_proto_指向构造函数.prototype,当p调用f函数时,this指向o.prototype

构造器中this

function addClass(){

this.a = 37;

}

var o = new addClass();

console.log(o.a);//37


function addClass(){

this.a = 37;

return {a:38;}

}

var o = new addClass();

console.log(o.a);//38







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值