手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JavaScript的面向对象(一)
JavaScript的面向对象(一)
摘要:一。传统的基于原型(Prototype)的做法确切地说Javascrīpt的“类”在严格意义上来讲并不能算真正的类,从其声明的对象到类(估切...

一。传统的基于原型(Prototype)的做法

确切地说Javascrīpt的“类”在严格意义上来讲并不能算真正的类,从其声明的对象到类(估切这么说)有这样一个关系:

Instance.__proto__=InstanceClass.prototype(ie不支持)

以上说明:实例的属性(__proto__)等于类的prototpye,我们可以看出,实例的"__proto__"正好巧接在类的"prototype"上,通过原型链(prototype)来查找其方法并扩展,我们会发现其方法(Method)与其属性(Property)都是Public(当然你也可以用Private,即不用this),而prototype其实就是一对象,用来记录方法做为一个集合

假设我们声明一个类A,可以如此

functionA(){

this.className="ClassA";//添加Public属性,正确来说类名应该是Private的

}

//添加一方法

A.prototype.getClassName=function(){

returnthis.className;//this指代A,而不是prototype

}

//声明一对象

varAObj=newA();

alert(AObj.__proto__==A.prototype);//ie下无效,ff下为true,说明上面的验证是正确的

//我们来看看对象属性

/*

由于用了this,className即为Public,即可以随意修改或读取

如果要保护起来,就要用到Private,那么可以去掉其this前缀,做为保护

读的时候用一公开方法,即prototype下的方法:

A.prototype.getClassName=function(){

returnclassName;//行不通,不存在,className是undefined

}

在这儿也只能约定一下,给className加上this,不要去直接去访问。在这一点上,的确不如第二种方法,稍

后会说明

*/

关于"prototype"

由于Javascrīpt并没有在系统内部并未使用过“继承”(很大可能),所以class下的prototype得到的全是

顶层Object,后期在继承的时候,我们可以看到这样的一个式子:

child.prototype=newparent();

继承两字带引号的意思是说就算有继承也并非真正意义上的继承,也只是通过prototype巧接得到。

用实例扩展一个方法到类,这儿不得不提及__proto__这个属性

复制代码 代码如下:<scrīptLANGUAGE="Javascrīpt">

<>

</scrīpt>在ff下我看可以看到实例名.__proto__=类.prototype,现在通过实例扩展一个方法,这儿在实际应用当中并不推荐这样做,下例:

s.__proto__.hjk=function(){

return"hjk";

}

alert(s.hjk());

for(vartinabc.prototype){

alert("prototype指向:"+t+"="+abc.prototype[t]);

}

这下应该明白了吧。

【JavaScript的面向对象(一)】相关文章:

Javascript的IE和Firefox兼容性汇编

JavaScript版代码高亮

JavaScript中的Math.LN2属性用法详解

在JavaScript中使用NaN值的方法

JavaScript中的Math.sin()方法使用详解

JavaScript实现Flash炫光波动特效

Javascript获取统一管理的提示语(message)

详解JavaScript中的表单验证

javascript的事件描述

JavaScript的while循环的使用

精品推荐
分类导航