面向对象的JS

●分析下面的代码:

func七ionaddH《) ,,nurnl" ,,nurnZ" .value; .value; 叭月.了屯习.了 varnulnl二doculnent.qetElemen七By工d《 v己rnuI'n2=d0cLll'nent.ge七Elemen七By工d《 document.qe七Elemen七By工d《”result") }I 函数

 

”七eX七” ,,七eX七field" ,,numl" + ”七eX七” ,,七eX七fieldZ" ,,numZ" ,,七eX七” ,,bUtton" ,,七eX七field3" 二”addH()" ,,工eSUlt" ,,bUtton" ,,bUtton" ,,提交” ' src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png" width="576" height="106">

 

上面的函数依赖于外部的HTMl代码。

面向对象就是封装变化的东西,写成类似于函数方程一样的思想。

总结:函数的含义是通用性,不依赖与外部的因素。就是我们以前学过的函数方程,比如:y = AX2+BX+Z   此函数中是参数X  返回值是Y

 

function   MethedName ( X)

{

     var y = AX2+BX+Z;

           return  y;

}

通过上面的解释就可以理解面向对象中的函数封装思想。

面向对象的思想来源于现实生活中,将‘类’比作我们生活中的某个人,它具备了自己的能力,每个‘类’‘人’都具有他自己的能力,我们想要完成一件事情如果自己可以搞定,就调用自己的方法,如果我们不能搞定就可以请出具备该能力的‘类’‘人’去调用它的方法去完成要做的事情。

这就是面向对象的思想,把能力在某个类中封装起来,让该类对象化,和人一样了具备某种能力,在特定的场合发挥该类的作用。

举例:如:123456lldsldlgdlgnvvadvn

这个字符串中我想要前面的6位数字的话,我们的办法是:因为我要操作字符串,所以就要请出字符串对象,该对象里面封装了截取字符串的方法。所以我们就调用字符串的截取字符串的方法就搞定了。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                                      `-`           `

☻☞

 

           

 

上面类在创建对象实例时,是每个对象实例都会有蓝颜色高亮函数,各有各的,函数一样,但是地址不一样,这样就会有些对象内存的浪费。

上面的公开函数还可以传参数,在调的时候给它参数即可。

 

上面的这种方式给对象添加函数,是动态的,对不同的对象就可以添加不同的函数,也可以添加相同的函数,只需赋给函数名再调用即可。

 

上面的这种添加的函数,就只能是p1对象独有的。

 

 

Dog.prototype.shout的意思是给类(对象原型)添加一个方法

 

通常我们多使用构造函数与原型方式混合使用的。

如:function  Dog()

{

      this.name = "";

      this.age  = 0;

}

Dog.prototype.shout = function(){

      window.alert('小狗');

}

Var dog1 = new Dog();

dog1.shout();

 

到这里我总结面向对象是:把对象的能力封装到类中去,对外公开一些属性和方法就可以了,调用者不需要知道内部是怎么实现的。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

☻☞

代码的重构的思想

将方法中固定死的对象抽象出来,以函数参数的形式往方法里传进来,这样方法就可用性很高,使用时只需要传相关参数,即可处理获得想要的返回值。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

☻☞

function inst()

{

      this.attr1=1;

      this.attr2="attr2";

      ...

}

var newInst=new inst();

for(var attr in newInst)

{

      alert("inst的"+attr+"属性:"+newInst[attr]);

}

通过for...in...遍历一个对象实例的所有属性,只有基本类型的属性值会显示出来,如果一个对象的属性是object则提示的是此属性的类型,可以使用嵌套的for...in...语句实现完全遍历。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

JavaScript 中应该用"=="还是"==="?

 

posted @ 2013-11-26 23:40  weifb  阅读(144)  评论(0)    收藏  举报