您的位置:首页 > Web前端 > JavaScript

Javascript this关键字详解(摘自Javascript语言精粹一书)

2010-05-06 11:51 579 查看
在javascript的函数里可以使用一个this关键字,在不同情况下,它所指代的东西有所不同。

1.方法调用模式

当一个函数被当做某对象的方法调用时,this代表该对象自己

var person = {
name : '张三',
talk : function(){
alert(this.name+' 正在和某人聊天');  //此处this指向了对像person
}
}

person.talk();    //张三 正在和某人聊天


2.函数调用模式

当一个函数并非一个对象的属性而被调用时,this被绑定到全局对象(即全局变量window),就算这个函数是某个方法的子函数也一样。

window.name = 'the window';
function getName(){
alert(this.name);
}
getName();  //"the window"


window.name = 'the window';
var person = {
name : '张三',
alertName : function(){
function getPersonName(){
return this.name;
}
alert(getPersonName());
}
}
person.alertName();    //弹出“the window”而不是“张三”


3.构造器调用模式

当一个函数被当做对象的构造器调用时,this指向要被创建的那个新对象

function Person(name){
this.name = name;  //this指向变量zhangsan
}
Person.prototype.getName = function(){
alert(this.name);
}
zhangsan = new Person('张三');
zhangsan.getName();  //张三


4.apply调用模式

在javascript中函数也是对象,每个函数都有一个apply方法,此方法允许我们用指定的this调用函数

var zhangsan = {
name:'张三',
getName:function(){
return(this.name);
}
}

var lisi = {
name:'李四'
}

var name1 = zhangsan.getName();  //张三
var name2 = zhangsan.getName.apply(lisi);  //李四
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: