相关疑难解决方法(0)

可以使用哪些技术在JavaScript中定义类,以及它们的权衡取舍?

我更喜欢在大型项目中使用OOP,就像我现在正在研究的那样.我需要在JavaScript中创建几个类,但是,如果我没有弄错的话,至少有几种方法可以做到这一点.什么是语法,为什么会以这种方式完成?

我想避免使用第三方库 - 至少在开始时.
寻找其他答案,我找到了文章面向对象的JavaScript编程,第一部分:继承 - Doc JavaScript,讨论了JavaScript中的面向对象编程.是否有更好的继承方式?

javascript oop class

685
推荐指数
12
解决办法
33万
查看次数

理解Object.create()和new SomeFunction()之间的区别

我最近Object.create()在JavaScript中偶然发现了这个方法,并试图推断它与创建一个对象的新实例有什么不同new SomeFunction(),当你想要使用另一个时.

请考虑以下示例:

var test = {
  val: 1,
  func: function() {
    return this.val;
  }
};
var testA = Object.create(test);

testA.val = 2;
console.log(test.func()); // 1
console.log(testA.func()); // 2

console.log('other test');
var otherTest = function() {
  this.val = 1;
  this.func = function() {
    return this.val;
  };
};

var otherTestA = new otherTest();
var otherTestB = new otherTest();
otherTestB.val = 2;
console.log(otherTestA.val); // 1 
console.log(otherTestB.val); // 2

console.log(otherTestA.func()); // 1
console.log(otherTestB.func()); // 2
Run Code Online (Sandbox Code Playgroud)

请注意,在两种情况下都观察到相同的行为.在我看来,这两种情况之间的主要区别是:

  • Object.create()实际使用的对象实际上形成了新对象的原型,而在new …

javascript prototype object-create

372
推荐指数
10
解决办法
12万
查看次数

带有静态方法的 NodeJS 导出类

我正在尝试在 NodeJs 应用程序上开发一个带有静态方法的类,作为配置模块的目的。
我想从不同的模块访问它,而无需每次都实例化一个新对象。

1)使用如下方法避免类原型是否正确?

function Config(){

}

Config.svrPort=function(){
    return 8080;
}

Config.dbName=function(){
    return "myDbName";
}

module.exports = Config;
Run Code Online (Sandbox Code Playgroud)

2)还有其他解决方案吗?

3)像这样将不同的对象放在同一个模块(例如config.js)中也是一种有效的方法吗?

exports.server=function(){
    return{
        port:8080
    };
};

exports.database=function(){
    return{
        name:"myDbName",
        user:"root",
        password:"myPassword",
        host:"localhost",
        port:3306
    };
};
Run Code Online (Sandbox Code Playgroud)

最后将其用作:

var config = require('./config');
config.server().port
config.database().name
Run Code Online (Sandbox Code Playgroud)

javascript node.js

5
推荐指数
1
解决办法
6605
查看次数

标签 统计

javascript ×3

class ×1

node.js ×1

object-create ×1

oop ×1

prototype ×1