[持续更新]JavaScript学习笔记(七)

1.this的用法

看了一些网上的博客,总结下自己对this的看法。

对于初学者来说,this还是比较抽象的;

掌握一段时间后,最熟悉的还是this指代当前对象;

但是归根结底一句话:this指调用函数的那个对象;

1.函数调用

function aa(){
	this.a = 1;
}
aa();//1

aa函数内定义了this.a

在这里this.a=1;相当于a=1;

还是那个原则this指调用函数那个对象;

这里调用aa的是全局对象window

this.a就相当于全局变量a

2.作为对象方法的调用

function aa(){
	this.a = 1;
}
var o = {};
o.a = 1;
o.m = aa;
o.m();//1

这个例子中,将function aa给了o.m,当调用哦o.m时执行函数,这时,调用函数的是对象o,所以this.a 就是o.a;

3.作为构造函数调用 

function aa(){
	this.a = 1;
}
var A = new aa();
alert(A.a);//1

这个例子可能会跟第一个例子混淆;

要搞清这里的执行顺序:

var A = new aa();会是程序最先执行的。

先实例化了一个aa的实例A

这时A继承了aa的所有属性,这里的new关键字以后还会说。

实际上就是将aa的所有方法放到A的上下文中执行,在A的上下文中,this.a就是指的是A,所以this.a 就是A.a

4.apply,call调用 

JavaScript中的callapply方法中都会经常使用this

详细请参考

http://blog.youkuaiyun.com/u014267351/article/details/47668179

 

function parent(){
	this.a = 1;
	this.b = 2;
	this.c = function(){
		alert(this.a + this.b);
	}
}

function child(){
	parent.call(this);
}
var a = new child();
a.c();//3

这时JavaScript面试的一道经典考题,继承的两种方法。这时call方法继承。

child想继承从parent的所有方法,使用了call函数;

这里的this指的是本身,就是调用call的对象,意思是将parent的所有方法属性在自己的上下文中执行一次,使之成为自己的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值