详细解说JavaScript的面向对象

JavaScript是一种计算机语言,但是又不是真正的对象编程语言,因为它的语法中没有class,下面是云上诗词技术频道小编为详细解说JavaScript的面向对象,一起来学习一下吧!

一。传统的基于原型(Prototype)的做法确切地说Javascrīpt的“类”在严格意义上来讲并不能算真正的类,从其声明的对象到类(估切这么说)有这样一个关系:Instance.__proto__=InstanceClass.prototype(ie不支持)以上说明:实例的属性(__proto__)等于类的prototpye,我们可以看出,实例的"__proto__"正好巧接在类的"prototype"上,通过原型链(prototype)来查找其方法并扩展,我们会发现其方法(Method)与其属性(Property)都是Public(当然你也可以用Private,即不用this),而prototype其实就是一对象,用来记录方法做为一个集合假设我们声明一个类A,可以如此function A(){this.className="ClassA"; //添加Public属性,正确来说类名应该是Private的}//添加一方法A.prototype.getClassName=function(){return this.className; //this指代A,而不是prototype}//声明一对象var AObj=new A();alert(AObj.__proto__==A.prototype); //ie下无效,ff下为true,说明上面的验证是正确的//我们来看看对象属性/*由于用了this,className即为Public,即可以随意修改或读取如果要保护起来,就要用到Private,那么可以去掉其this前缀,做为保护读的时候用一公开方法,即prototype下的方法:A.prototype.getClassName=function(){return className; //行不通,不存在,className是undefined}在这儿也只能约定一下,给className加上this,不要去直接去访问。在这一点上,的确不如第二种方法,稍后会说明*/关于"prototype"由于Javascrīpt并没有在系统内部并未使用过“继承”(很大可能),所以class下的prototype得到的全是 顶层Object,后期在继承的时候,我们可以看到这样的一个式子:child.prototype=new parent();继承两字带引号的意思是说就算有继承也并非真正意义上的继承,也只是通过prototype巧接得到。用实例扩展一个方法到类,这儿不得不提及__proto__这个属性

复制代码 代码如下:

原创文章,作者:nxyxs,如若转载,请注明出处:http://www.yunshangshici.com/56079.html

(0)
上一篇 2022年6月11日 下午3:02
下一篇 2022年6月11日 下午3:02

相关推荐

返回顶部