JavaScript的面向对象(一)

技术部221

技术部221

2016-02-19 11:44

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的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__这个属性
代码如下:
scrīpt LANGUAGE="Javascrīpt" 
!-- 
function abc(){ 
 var ōwner=this; 
 owner.k="pp"; 
 owner.abc=function(){ 
 } 

abc.prototype.def=function(){ 

var s=new abc(); 
for(var t in abc.prototype){ 
 alert("prototype指向:"+t+"="+abc.prototype[t]); 

for(var t in s.__proto__){ 
 alert("__proto__指向:"+t+"="+s.__proto__[t]); 

//-- 
/scrīpt 在ff下我看可以看到实例名.__proto__=类.prototype,现在通过实例扩展一个方法,这儿在实际应用当中并不推荐这样做,下例:
s.__proto__.hjk=function(){
  return "hjk";
}
alert(s.hjk());
for(var t in abc.prototype){
 alert("prototype指向:"+t+"="+abc.prototype[t]);
}
这下应该明白了吧。
展开更多 50%)
分享

猜你喜欢

JavaScript的面向对象(一)

Web开发
JavaScript的面向对象(一)

Javascript面向对象编程

Web开发
Javascript面向对象编程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

javascript 的面向对象编程

电脑网络
javascript 的面向对象编程

JavaScript的面向对象(二)

Web开发
JavaScript的面向对象(二)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

领悟JavaScript中的面向对象

Web开发
领悟JavaScript中的面向对象

JavaScript面向对象之方法重载

Web开发
JavaScript面向对象之方法重载

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

xWin之JS版

xWin之JS版

使U盘更加安全的招数

使U盘更加安全的招数
下拉加载更多内容 ↓