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的对象使用很变扭。

转载于:https://www.cnblogs.com/gamedaybyday/p/6592836.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值