gpt4 book ai didi

javascript - 如何构建模拟类库并控制范围使用的模块

转载 作者:行者123 更新时间:2023-12-02 17:10:07 24 4
gpt4 key购买 nike

我开始在 Javascript 中使用 OO 概念。

所以,我有几个“类”js 文件,每个文件都模拟一个 OO 对象。每个类都定义在一个文件中,例如 myClass1.js、myClass2.js 等。

每个类看起来像:

// FILE myproject.classlib.myClass1

// "Class"
function myClass1(param1, param2){

// Properties
this.prop1 = param1;
this.prop2 = param2;
}

/// "Methods"
myClass1.prototype.doSomething = function(){

alert('myClass1 Hello world. prop1=' + this.prop1);
alert('myClass1 Hello world. prop2=' + this.prop2);
}

现在我需要构建一个模块来控制这些类的使用范围并将它们组织到“库”中。

允许我使用类似的东西:

var instance1 = new myProject.myClassLibrary1.myClass1('a', 'b');
var instance2 = new myProject.myClassLibrary1.myClass2('c', 'd');

var instance3 = new myProject.myClassLibrary2.myClass1('e', 'f');
var instance4 = new myProject.myClassLibrary2.myClass2('g', 'h');

instance1.doSomething(); /// prop1=a prop2=b
instance2.doSomething(); /// prop1=c prop2=d
instance3.doSomething(); /// prop1=e prop2=f
instance4.doSomething(); /// prop1=g prop2=h

如何定义原始类代码定义,使其属于 myClassLibraryN 和 myProject ?

我如何使用这个库作为第二个代码?

最佳答案

同时@Robert's答案是正确的,我想告诉你一种更好的方法来声明 namespace 而不污染全局 namespace

var myProject = myProject || {};
myproject.myClassLibrary1 = {};

(function (namespace, undefined) {
// private properties
var foo = "foo",
bar = "bar";

// public methods and properties
namespace.foobar = "foobar";
namespace.myClass1 = function () {
speak("hello world");
};

// private method
function speak(msg) {
console.log("You said: " + msg);
};
})(myproject.myClassLibrary1);

关于javascript - 如何构建模拟类库并控制范围使用的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24900847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com