• JavaScript 面向对象编程


    写的项目需要把js封装处理,不然很乱。。然后就想到前端大神阮一峰了,去blog搜索一下果然有收获

    参考文章:

    Javascript定义类(class)的三种方法

    Javascript 面向对象编程(一):封装

    此处使用极简主义法:

    如何定义一个类:

    此法是定义一个生成器以及构造函数(类似工厂模式吧)

    var Cat = {

        createNew: function(){

        var cat = {};

        cat.name = "大毛";

        cat.makeSound = function(){ alert("喵喵喵"); };

        return cat;

      }

    };

    Cat是生成器类,createNew是一个构造器函数,cat是实体对象,cat.name是成员变量

    如何调用构造器:

    var cat1 = Cat.createNew();
    cat1.makeSound(); // 喵喵喵

    如何定义私有变量:

    cat.name是一个公有变量,外部可以直接访问

    定义私有变量的方法则是在构造函数里定义一个局部变量,这样只有类的成员函数能够访问这个变量了,外部访问是undefined

    var Cat = {
        createNew: function(){
        var cat = {};
        var sound = "喵喵喵";
        cat.makeSound = function(){ alert(sound); };

        var privateFun() {alert("private")}
        cat.publicFun() {
          privateFun(); //注意这里不能用this.privateFun();,会报错
          alert("public");
        }
        
    return cat;   } };

    测试结果

    var test = Cat.createNew();
    test.privateFun(); // undefined
    test.publicFun(); // "private" "public"

    如何定义静态变量(数据共享):

    在Cat这个构造类内定义变量。。这就涉及到闭包的知识了,Cat类只存在一个实力,而cat1=Cat.createNew(),实际上是在Cat类的一个子函数定义一个变量,子函数是可以访问父类/父函数内的变量的,所以无论那个实体类修改Cat的成员变量的时候,Cat这个类里的变量就修改了,就实现了相当于Java的静态变量的功能了

    var Cat = {
        sound : "喵喵喵",
        createNew: function(){
        var cat = {};
        cat.makeSound = function(){ alert(Cat.sound); };
        cat.changeSound = function(x){ Cat.sound = x; };
        return cat;
      }
    };

    这样sound就是一个静态变量

    然后生成两个实例对象并用其中一个修改sound

    var cat1 = Cat.createNew();
    var cat2 = Cat.createNew();
    cat1.makeSound(); // 喵喵喵
    
    cat2.changeSound("啦啦啦");
    cat1.makeSound(); // 啦啦啦

    cat2.changeSound("啦啦啦");

      cat1.makeSound(); // 啦啦啦

  • 相关阅读:
    RAISERROR (Transact-SQL)的用法
    Eclipse 工程中set() get()等方法报错的解决方法
    SqlServer单步调试
    centOS7 查看防火墙状态
    如何查看Linux端口占用情况
    异常处理机制(Begin try Begin Catch)
    inner join 、left join 、right join 和full join的区别
    Emacs 快速指南
    x01.DiamondIDE: hello ide
    剑指offer大总结
  • 原文地址:https://www.cnblogs.com/someblue/p/4330770.html
Copyright © 2020-2023  润新知