• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
新能源汽车行业用户产品设计
新能源汽车行业、面向C端用户的产品设计
博客园    首页    新随笔       管理     

《征服AjaxWeb2.0开发技术详解》读书笔记3

KeyWord:Ajax,征服Ajax,征服AjaxWeb2.0开发技术详解,Ajax教程,Ajax图书,Ajax学习,学习Ajax

 

这次重点看的是JavaScript面向对象程序设计这章,不得不承认,这方面的内容,我以前并没有很专门的研究过。这个看书让我以前对这块的“混沌”“明朗”了很多。

 

  • JavaScript中支持面向对象的基础

    面向对象中最基本的东西就是对象了,而对象是通过类这个东西来实现的,所以要想支持面向对象,如何定义类,如何定义类的属性和方法,如何实例化一个类是一个首先要解决的问题。到底JavaScript是如何解决这个问题的。我们将分别来讲解。

     

    1. 用定义函数的方式定义类。

      Javascript中定义一个类的方法如下:

      function class1(){

      //类成员的定义及构造函数。

      }

      这里class既是一个函数也是一个类。可以将它理解为类的构造函数,负责初始化工作。

       

    2. 使用new操作符获得一个类的实例。

      function class1(){

      //类成员的定义及构造函数。

      }

       

      var obj1=new class1();

      在javascript中,函数和类就是一个概念。当对一个函数进行new操作是,就会返回一个对象。如果这个函数没有初始化类成员,那就会返回一个空的对象。例如:

      function hello(){

      alert("hello");

      }

      var obj=new hello();

      alert(typeof(obj));

      当new一个函数是,这个函数就是做代表类的构造函数,其中的代码被看作为了初始化一个对象,用于表示类的函数也称为构造器。

       

    3. 使用方括号([])引用对象的属性和方法。

      在jvascript中,每个对象可以看作是多个属性(方法)的集合,引用一个属性(方法)方法如下:

      对象名.属性(方法)名

      还可以用方括号的形式来引用:

      对象名["属性(方法)名"]

      注意合理方法名和属性名用字符串引起来了,说明是字符串。这个体现了Javascript对象就是一组属性(方法)的集合这个属性。

      方括号语法像一种参数语法,可用一个变量来表示引用对象的哪个属性。体会下面的这两句话:

      if (palamate="age")alert(user.age) //user是一个类对象,age是它的一个属性。

      alert(user[palamate]);

      如果不采用方括号的方法,又不想使用哪个条件判断。可以使用eval函数。

      alert(eval("user." + palamate));

      利用eval函数的性质,执行了一段动态生成的代码,并返回了结果。

       

    4. 动态添加、修改、删除对象的属性和方法。
    5.  
    6. 其它的语言中,对象一旦生成,就不能更改,要为一个对象添加、修改成员必须要在对应的类中修改,并要重新实例化,程序也必要要重新编译。javascript提供了灵活的机制来修改对象的行为,可用动态减价、修改、删除属性和方法。
    7. 例如先用类Object来创建一个空对象user:
    8. var user=new Object();
    9. 添加属性
    10. user.name="jack";
    11. user.age=21;
    12. user.sex="male";
    13. 添加方法
    14. user.myAlert=function(){
    15. alert("my name is:" + this.name);
    16. }
    17. 这时候就可以调用来看看啦.user.myAlert;
    18. 修改属性和方法
    19. 修改一个属性和方法的过程就是用新的属性和方法替换旧的属性。
    20. user.name="tome";
    21. user.myAlert=function(){
    22. alert("reName is:" + this.name);
    23. }
    24. 删除属性和方法
    25. 将其设为undefined就可以了:
    26. user.name=undefined;
    27. user.myAlert=undefined;
    28.  
    29. 使用打括号({})语法创建无类型对象

      传统的面向对象语言中,每个对象都会对应到一个类,但是javascript并没有严格意义上的类的概念。所以甚至可以出现一个不是从类实例化过来的对象。它提供了一种简单的方式来创建对象,即大括号语法。

      {

      property1:statement,

      property2:statement2,

      …..,

      propertyn:statementn

      }

      通过、大括号括住多个属性或者方法及其定义(用逗号隔开),来实现对象的定义。其中属性名和其定义之间用冒号隔开。

      看这个句:var obj={};这个就是定义了一个无类型对象,它等价于:var obj=new Object();

      无类型对象提供了一种创建对象的简便方式,它以紧凑和清晰的语法将一个对象体现为一个完整的实体。而且也有利于减少代码的体积,这对javascript代码来说尤其要,减少体积以为这提高了访问速度。

       

    30. prototype原型对象

      先来段理论性比较强的话,然后通过具体的例子来讲解。

      prototype对象是实现面向对象的一个重要机制,每个函数其实也是一个对象。他们对应的类是“Function”,但他们身份特殊,每个函数对象都具有一个子对象prototype。即prototype表示了该函数的原型,而函数也是类,prototype就是表示了一个类的成员的集合。当通过new来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。

      既然prototype是一个对象,就可以对其进行动态的修改。

      function class1(){

      //empty

      }

      //对类的prototype对象进行修改,增加一个method方法。

      class1.prototype.method=function(){

      alert(1);

      }

      var obj1=new class1();

      obj1.method();

       

    31. 还有一些自己去找资料来来理解吧。

      javascript中this指针。

      javascript中类的实现机制。

      javascript中类的设计模式。

      javascript中实现类的私有成员。

      利用for(…in...)实现反射机制。

      使用反射来传递样式参数。

      类的继承

      利用共享prototye实现继承。

      利用反射机制和prototype实现继承。

      实现抽象类

      抽象类和虚函数。用javascript实现抽象类。

    posted @ 2007-04-12 14:49  阿一(杨正祎)  阅读(128)  评论(0)    收藏  举报
    刷新页面返回顶部
    博客园  ©  2004-2025
    浙公网安备 33010602011771号 浙ICP备2021040463号-3