zoukankan      html  css  js  c++  java
  • node中的对象

    1. class的概念

    定义一个class,属性都是private,方法都是public。

    Hello.js:

    使用class

    index.js:

    2. 单例类

    使用exports而不是module.exports。区别在于Hello导出的是新的Function对象,而single导出的是single.js的初始对象{}。

    属性都是private,方法都是public需要exports接口导出。

    exports.name = name,相当于给接口{}创建动态属性。是无法导出var name的,因为name不是引用类型。

    single.js:

    new single()的话会报错。无论在哪里引用require single,值getName都是一样的。

    index.js:

     

    3. JS方法和变量的总结

    1 对象的方法和属性。可理解为对象原本包含的变量和方法。

    Hello.js

    //模块封装Hello类
    module.exports = Hello;
    
    //Hello类定义
    function Hello(){
        this.age = 1;
    
        this.setAge = function(age){
            this.age = age;
        }
    
        this.getAge = function (){
            return this.age;
        }
    }
    

      

    index.js

    var Hello = require("./Hello.js");
    var hello = new Hello();
    
    //访问age
    console.log(hello.age);       //1
    console.log(hello.getAge());  //1
    
    //修改age
    hello.setAge(2);
    
    //访问修改后的age
    console.log(hello.age);       //2
    console.log(hello.getAge());  //2
    
    //新的实例,age初始值不变
    var hello2 = new Hello();
    console.log(hello2.age);     //1
    

      

      

     2 类方法和变量,可理解为类的静态变量和方法

    Hello.js

    //模块封装Hello类
    module.exports = Hello;
    
    //Hello类定义
    function Hello(){
    
    }
    
    Hello.age = 1;
    
    Hello.getAge = function(){
        return Hello.age;
    }
    

     index.js

    var Hello = require("./Hello.js");
    var hello = new Hello();
    
    //实例无法访问静态变量
    console.log(hello.age);         //undifined
    //console.log(hello.getAge());  //报错
    
    //访问age
    console.log(Hello.age);         //1
    console.log(Hello.getAge());    //1
    
    //修改age
    Hello.age = 2;
    
    //访问修改后age
    console.log(Hello.age);         //2
    console.log(Hello.getAge());    //2

     3 原型变量和方法,可理解为对象原本包含的变量和方法。可用于继承。

    Hello.js

    //模块封装Hello类
    module.exports = Hello;
    
    //Hello类定义
    function Hello(){
    
    }
    
    Hello.prototype.age = 1;
    
    Hello.prototype.getAge = function(){
        return Hello.prototype.age;
    }
    

    index.js

    var Hello = require("./Hello.js");
    var hello = new Hello();
    
    //访问age
    console.log(hello.age);       //1
    console.log(hello.getAge());  //1
    
    //修改age
    hello.age = 2;
    
    //访问修改后的age
    console.log(hello.age);       //2
    console.log(hello.getAge());  //1
    
    //新的实例
    var hello2 = new Hello();
    console.log(hello.age);       //2
    console.log(hello.getAge());  //1
    

      

    4  类外的变量和方法 

     Hello.js

    //模块封装Hello类
    module.exports = Hello;
    
    var age = 1;
    var getAge2 = function(){
        return age;
    }
    
    
    //Hello类定义
    function Hello(){
    
        this.setAge = function(_age){
           age = _age;
        }
    
        this.getAge = function (){
            return age;
        }
    }
    

    index.js

    var Hello = require("./Hello.js");
    var hello = new Hello();
    
    //访问age
    console.log(hello.age);         //undifined
    console.log(hello.getAge());    //1
    
    //无法访问getAge2()
    //console.log(hello.getAge2()); //报错
    //Hello.getAge2();              //报错
    
    //修改age
    hello.setAge(2);
    
    //访问修改后的age
    console.log(hello.age);       //undifined
    console.log(hello.getAge());  //2
    
    //新的实例
    var hello2 = new Hello();
    console.log(hello2.age);       //undifined
    console.log(hello2.getAge());  //2
    

      

    总结:

    1. 无法和java、c#那样有class extends implements private protected public static等来定义变量和方法。

    2. 对于非前端js的使用者,nodejs的对象使用很变扭。

  • 相关阅读:
    Python的招牌花旦
    Python的for循环究竟是什么回事儿
    人人都喜欢用的十大python标准库
    有编程基础学python怎么赚点小钱?
    python3 Flask Redis 如何切换数据库
    贪心算法
    【ACM】nyoj_106_背包问题_201308152026
    【ACM】nyoj_14_会场安排问题_201308151955
    【ACM】nyoj_132_最长回文子串_201308151713
    【ACM】nyoj_47_过桥问题_201308151616
  • 原文地址:https://www.cnblogs.com/gamedaybyday/p/6592836.html
Copyright © 2011-2022 走看看