WEB开发网
开发学院网页设计JavaScript 在JavaScript中使用面向对象 阅读

在JavaScript中使用面向对象

 2010-09-14 13:20:02 来源:WEB开发网   
核心提示: 如下面的例子,当对象没有定义this指定的函数(isNaN)时,在JavaScript中使用面向对象(5),那么可能覆盖全局的同名函数, 看一些代码示例:正确使用this的例子:alert(isNaN(1));//全局函数isNaNfunctionobj(params){this.toSt

如下面的例子,当对象没有定义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);

上一页  1 2 3 4 5 6  下一页

Tags:JavaScript 使用 面向

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接