NodeJS对象实例 - 类或函数

时间:2017-07-19 20:41:53

标签: javascript node.js class

我有一个关于NodeJS中对象实例化的基本问题以及声明类的不同方法。 我已经看过很少的教程,但没有教程描述,当我应该使用哪种方式或为什么有不同的方式。

我想创建一个对象的实例,并创建了两个代码片段,它们完全相同但具有完全不同的代码。

我的问题:我是否得到相同的结果,或者有什么特别的东西,我看不出它是不同的,而且,我应该使用哪种方式?

例A:

class ExampleA {

    constructor () { }

    method() {
        console.log("Hello world");
    }
}
module.exports.ExampleA = ExampleA;

例B:

function ExampleB() {
}

NoSQL1.prototype.method = function() {
    console.log("Hello world");
}
module.exports.ExampleB = ExampleB;

如果我做对了,在ExampleB中我只是在" Classname.prototype.Method"

中的现有类中添加一个新函数。

也许还有更多的方法可去?作为C#开发人员,我更喜欢ExampleA,目前......

2 个答案:

答案 0 :(得分:0)

没有重大区别。 Javascript没有传统的类。一切都只是一个对象,例子A的语法基本上就是因为约定和Javascript试图迎合OOP和函数式编程。

但只有第一种模式允许你通过使用闭包来创建私有变量。

答案 1 :(得分:-1)

你得到相同的结果。 在最新版本的syntactic sugar(ES)中,类是ECMAScript。 JavaScript仍然是prototype based,因此您应该注意对特定字this的引用,例如:

class ExampleA {
    constructor() {
        this.text = 'Hello World!'
    }
    method() {
        console.log(this.text);
    }
}


let a = new EampleA()
a.method() // will print 'Hello World'
let m = a.method;
m() // will throw exception "Cannot read property 'text' of undefined
let b = {text: 'Hi'};
m.call(b) // will print 'Hi'