js中this的指向

this位于普通函数中, this的值指向window,准确的说this为null, 但是被解释成window

alert(window.xx);
function t() {
	this.xx = 33;
	this.yy = null;
}
alert(window.xx);
alert(window.yy); //输出undefined

作为对象的方法来调用, this指向方法的调用者, 即该对象

var obj = {
	xx: 999,
	yy: 888,
	t: function() {
		alert(this.xx);
	}
};
obj.t();

this指向, 不管函数位于哪一个位置, 只要关注函数调用的位置

var dog = {
	xx: 'wangwang'
};
//this指向dog
dog.t = obj,t;
dog.t();

var show = function() {
	alert('show' + this.xx);
} 
dog.t = show;
dog.show();

函数作为构造函数调用时候, 在js中没有类的概念, 创建对象是用构造函数来完成
js中没有类的概念, 创建对象是使用构造函数来完成或者直接使用json格式来写对象

new Dog()发生了以下几个步骤

  1. 系统创建空对象{}, 空对象的constructor属性指向Dog函数
  2. 将函数的this指向空对象
  3. 执行该对象
  4. 返回该对象
function Dog(name, age) {
	this.name = name;
	this.age = age;
	this.bark = function() {
		alert('I am' + this.name);
	}
}
var dog = new Dog('huzi', 2);
dog.bark();

函数callapply

function t(num) {
	alert('我的真实年龄是' + this.age);
	alert('但是我一般告诉别人我' + (this.age + num));
}
var wangwu = {name: 'wangwu', age:30};
t.call(wangwu, 5);

函数.call(对象, 参数1, 参数2)
运行如下:

  1. fn函数中this指向对象obj
  2. 运行fn(参数1, 参数2, 参数3)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值