• JavaScript面向对象简介


    方法一:构造函数法

    function Cat(){  
        this.name = "";  
    }  
    Cat.prototype.showName = function(){  
        console.log(this.name);  
    }  
      
      
    var cat = new Cat();  
    cat.name = "Tom";  
    cat.showName();// Tom
    

     它用构造函数模拟"类",在其内部用this关键字指代实例对象。
    类的属性和方法,还可以定义在构造函数的prototype对象之上。
    生成实例的时候,使用new关键字。


    方法二:Object.create()法

    var Cat = {  
        name:"",  
        showName:function(){  
            console.log(this.name);  
        }  
    };  
      
      
    var cat = Object.create(Cat);  
    cat.name = "Tom";  
    cat.showName();// Tom
    

     用这个方法,"类"就是一个对象,不是函数。
    然后,直接用Object.create()生成实例,不需要用到new。


    方法三:极简主义法
    1 类的定义

    var Cat = {  
        createNew:function(){  
            var cat = {};  
            cat.name = "";  
            cat.showName = function(){  
                console.log(this.name);  
            }  
            return cat;  
        }  
    };  
      
      
    var cat = Cat.createNew();  
    cat.name = "Tom";  
    cat.showName();// Tom 
    

     2 继承

    var Animal = {  
        createNew:function(){  
            var animal = {};  
            animal.name = "";  
            animal.sleep = function(){  
                console.log("ZZzz...");  
            }  
            return animal;  
        }  
    };  
      
      
    var Cat = {  
        createNew:function(){  
            var cat = Animal.createNew();  
            cat.name = "Cat";  
            cat.showName = function(){  
                console.log(this.name);  
            }  
            return cat;  
        }  
    };  
      
      
    var cat = Cat.createNew();  
    cat.name = "Tom";  
    cat.showName();// Tom  
    cat.sleep();// ZZzz... 
    

     让一个类继承另一个类,实现起来很方便。只要在前者的createNew()方法中,调用后者的createNew()方法即可。

    3 私有成员

    var Cat = {  
        createNew:function(){  
            var cat = {};  
            var name = "Tom";// 私有  
            cat.showName = function(){  
                console.log(name);  
            }  
            return cat;  
        }  
    };  
      
      
    var cat = Cat.createNew();  
    cat.showName();// Tom
    

     在createNew()方法中,只要不是定义在cat对象上的方法和属性,都是私有的。

    4 类属性

    var Cat = {  
        className:"Cat",  
        createNew:function(){  
            var cat = {};  
            cat.name = "";// 私有  
            cat.showName = function(){  
                console.log(cat.name);  
            }  
            cat.showClass =  function(){  
                console.log(Cat.className);  
            }  
            return cat;  
        }  
    };  
      
      
    var cat1 = Cat.createNew();  
    cat1.name = "Tom";  
    cat1.showName();  
    cat1.showClass();  
      
      
    var cat2 = Cat.createNew();  
    cat2.name = "Jim";  
    cat2.showName();  
    cat2.showClass();  
    

     有时候,我们需要所有实例对象,能够读写同一项内部数据。
    这个时候,只要把这个内部数据,封装在类对象的里面即createNew()方法的外面即可。

  • 相关阅读:
    Linux(Centos7)yum安装最新redis
    refresh table tablename ;MSCK REPAIR TABLE table_name;
    整个shuffle的流程图
    Vim简明教程
    centos vim 7.3 升级 + vim 简单配置文件
    Python——可变类型与不可变类型(即为什么函数默认参数要用元组而非列表)
    python——修饰符
    转——《将人性置之死地而后生》刘夙
    各学科领域入门书籍推荐
    python——关于Python Profilers性能分析器
  • 原文地址:https://www.cnblogs.com/guangyun/p/8990941.html
Copyright © 2020-2023  润新知