zoukankan      html  css  js  c++  java
  • javascript 面向对象 (类)

    c#/php/java/python ,平时开发中会接触多种语言,但是作为一个webapplication开发者,接触最多却最被忽视的是javascript。

    再学习每一门语言,会无意中第一时间去了解该语言面向对象的特点,然而却一直忽视javascript的面向对象的特点。近日查阅相关资料对javascript的面向对象重温。

    javascript对类的定义很特别。不同于其他面向对象的语言,js是每有class关键字的,静态类与非静态类的定义也有很大差别,另外继承也不一样。

    非静态类的定义:

     

    function BaseObject(){
         this.name='my object';
         this.func=function(){alert('i am func')};               
    }

    类的关键字还是function,跟定义一个函数或方法是一样的,使用this作为定义属性和方法的内部指代变量。

    使用:

    var object = new BaseObject();
    
    alert(object.name);   //使用属性 
    alert(object['name']); //使用索引器也可以调用到属性 object.func();     //使用方法

    再使用的时候,通过new 关键字创建类的实例,然后可以再这个实例的变量上直接使用之前用this定义的属性和方法。

    那么如果在定义类的时候混入平时写js代码时的那些方式会如何? 例如 var a=‘123’;alert(‘456’);

    这样写的话,这部分代码就不属于属性或者方法了,只会被调用BaseObject()的时候直接运行出来而已。 

    静态类:

    很有趣,不是用关键字来定义,并且也不需要function来定义,方法属性不是用=号来指定,也不需要用this变量,属性和方法的分割符号也不是;号而是,号,更象是定义对象的枚举。

    定义:

    var  obj= {
    	a:'aaa',
    	b:'bbb',
    	c:function(){alert('i am func');}
    }
    

    没有关键字,直接用{}就可以了,由于是静态的,没有名称,所以一旦创建就立即用变量保存,以便以后使用。

    使用:

    alert(obj.a);
    alert(obj['b']);
    obj.c();
    

    直接调用即可。

    静态类是在{}中的,也就是说{}就是一个实体对象(不是类,是一个对象),因此可以将他作为返回值对上面得代码进行优化

    function getObj(){
        return {
              a:'aaa',
              b:'bbb',
              c:function(){alert('i am func');
            }
      }

    这样,就可以比较简单的通过调用 getObj()将静态类付给不同的变量了  

    var o1=getObj();

    var o2=getObj();

    这种方法相当于创建了两个一模一样的静态类。

     

  • 相关阅读:
    cmd修改系统时间
    军校退学
    What's New for Visual C# 6.0
    分批次获取git for windows的源代码
    Interpolated Strings
    Java写程序猿专访String2
    堆栈溢出分析
    javascript于"return obj === void 0"这样的书面理由和优势
    Java 内部类分析
    Android使用开发WebView战斗技能
  • 原文地址:https://www.cnblogs.com/ZetaChow/p/2695994.html
Copyright © 2011-2022 走看看