1.封装一个类

2.子类继承父类

3.“非构造函数”继承

4.定义有“私有属性”,“静态属性”的类

 

1.封装一个类: 

 function Cat(name,color){

                //可以改变的属性

    this.name = name;  

    this.color = color;

  }

        //不会改变的属性

  Cat.prototype.type = "猫科动物";

  Cat.prototype.eat = function(){alert("吃老鼠")};

使用方法:

        var cat1 = new Cat("大毛","黄色");

  var cat2 = new Cat("二毛","黑色");

  alert(cat1.type); // 猫科动物

  cat1.eat(); // 吃老鼠

http://bluesd7.com/蓝影闪电的随笔/ContentId/76/Javascript-面向对象编程(一):封装

 

2.子类继承父类

  function extend(Child, Parent) {

    var F = function(){};

    F.prototype = Parent.prototype;

    Child.prototype = new F();

    Child.prototype.constructor = Child;

    Child.uber = Parent.prototype;

  }

使用方法:

        extend(Cat,Animal);

  var cat1 = new Cat("大毛","黄色");

  alert(cat1.species); // 动物

http://bluesd7.com/蓝影闪电的随笔/ContentId/77/Javascript面向对象编程(二):构造函数的继承

 

3.“非构造函数”继承

  var Chinese = {
    nation:'中国'
  };

  var Doctor ={
    career:'医生'
  }

//使用下面方法深拷贝继承

  function deepCopy(p, c) {

    var c = c || {};

    for (var i in p) {

      if (typeof p[i] === 'object') {

        c[i] = (p[i].constructor === Array) ? [] : {};

        deepCopy(p[i], c[i]);

      } else {

         c[i] = p[i];

      }
    }

    return c;
  }

使用方法:

var Doctor = deepCopy(Chinese);

  Chinese.birthPlaces = ['北京','上海','香港'];

  Doctor.birthPlaces.push('厦门');

  alert(Doctor.birthPlaces); //北京, 上海, 香港, 厦门

  alert(Chinese.birthPlaces); //北京, 上海, 香港

http://bluesd7.com/蓝影闪电的随笔/ContentId/79/Javascript面向对象编程(三):非构造函数的继承

4.定义有“私有属性”,“静态属性”的类

 //父类

  var Animal = {

    createNew: function(){

      var animal = {};

      animal.sleep = function(){ alert("睡懒觉"); }; //父类的方法

      return animal;

    }

  };

//子类

  var Cat = {

               sound : "喵喵喵",  //静态属性,所有猫的实例共享

    createNew: function(){

                       var sound = "喵喵喵"; //子类私有方法

      var cat = Animal.createNew();    //子类继承父类

      cat.name = "大毛";  //子类的公有属性

      cat.makeSound = function(){ alert("喵喵喵"); }; //子类的公有方法

      return cat;

    }

  };

使用方法:

  var cat1 = Cat.createNew();

  var cat2 = Cat.createNew();

  cat1.sleep(); // 睡懒觉  公有方法

  alert(cat1.sound); // undefined  私有方法

  cat1.makeSound(); // 喵喵喵

  cat2.changeSound("啦啦啦");  //修改了共享的数据,另一个实例对象也会受到影响。

  cat1.makeSound(); // 啦啦啦  

参考:http://bluesd7.com/蓝影闪电的随笔/ContentId/82/Javascript定义类(class)的三种方法

//判断函数clock是否存在,存在就执行            
typeof clock === "function" ? clock() : false;

//获取url参数的方法

function getQueryVariable(variable)
{
       var query = window.location.search.substring(1);
       var vars = query.split("&");
       for (var i=0;i<vars.length;i++) {
               var pair = vars[i].split("=");
               if(pair[0] == variable){return pair[1];}
       }
       return(false);
}

 

转载请注明出处: http://bluesd7.com/蓝影闪电的随笔/ContentId/80/JS常用方法

 
标签: 分类: JavasScript, 前端开发, 原创

评论数量 (0)

    留下一个评论

    剩余2000个字符。 一共限制在2000个字符内.
    发送评论

    搜索

    关于我

    姓名:余钊

    英文名:Joshua

    现居:武汉

    Email: yuzhao_blue@163.com

    关注:架构, 全栈, SQL, 高性能, 高并发

    日历