在JavaScript中使用面向对象
2010-09-14 13:20:02 来源:WEB开发网如下面的例子,当对象没有定义this指定的函数(isNaN)时,那么可能覆盖全局的同名函数, 看一些代码示例:
正确使用this的例子:
alert(isNaN(1));//全局函数isNaN
functionobj(params){
this.toString=function(){return'Thisisanobject.';}
this.isNaN=function(){
return"notanymore!";
};
}
varo=newobj();//正确的使用方式,调用构造函数
alert(o.isNaN(1));//此时obj定义中的this指向o这个实例而不是全局上下文
alert(isNaN(1));//全局函数未发生改变
错误的例子:
alert(isNaN(1));//全局函数isNaN
functionobj(params){
isNaN=function(){
return"notanymore!";
};
}
obj();//错误的使用方式,this指向全局上下文,全局函数isNaN被覆盖
alert(isNaN(1));//全局函数发生改变
同时我们还注意到有一些全局函数则无法覆盖,例如toString()
下面我们看JavaScript的一个很好用的方法: call
关于call的解释:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
可以这样来理解:
我们定义了一个函数abc:
functionabc()
{
alert(this.member1);
}
varobj={member1:"Helloworld!",show:abc};
varobj2={member1:"Helloworldagain!",show:abc};
obj.show();
//也可以使用
abc.call(obj);
abc.call(obj2);
Tags:JavaScript 使用 面向
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接