zoukankan      html  css  js  c++  java
  • 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()方法的外面即可。

  • 相关阅读:
    【家庭记账本】Android开发日记(七)
    每日总结【2020/02/08】
    每日总结【2020/02/07】
    【家庭记账本】Android开发日记(六)
    每日总结【2020/02/06】
    【家庭记账本】Android开发日记(五)
    【iOS开发】 CoreText 使用教程:以创建一个简单的杂志应用为例
    用NSLogger代替NSLog输出调试信息
    iOS开发常用国外网站清单
    Xcode快捷键 2(转)
  • 原文地址:https://www.cnblogs.com/guangyun/p/8990941.html
Copyright © 2011-2022 走看看