你如何在浏览器中使用基于类的OOP JavaScript?

时间:2013-11-11 23:02:40

标签: javascript oop

我一直在将我的程序化JS函数转换为类,现在我想知道何时实例化它。

这是我的班级:

MyProject = function() {};

MyProject.prototype.myProperty = "10";

MyProject.prototype.myMethod = function (value) {
   // do something

} 

这是我的HTML页面:

<script src="javascriptfilesdirectory/MyProject.js"/>

<script>
function initialize() {
   myProject = new MyProject();
}
</script>

<body onload="initialize()" >

我的问题是我是否在页面加载时初始化它并创建一个如上所示的局部变量或者我是否在JS类文件中初始化它?

这是我的JS文件:

MyProject = function() {};

MyProject.prototype.myProperty = "10";

MyProject.prototype.myMethod = function (value) {
   // do something

} 

myProject = new MyProject();

另外,我在谈论一般情况,在这种情况下,它是一个单身人士。我只想要使用它的一个副本。

2 个答案:

答案 0 :(得分:3)

如果你真的想要它作为一个单身人士,你可以比这更容易,比如:

var myProject = new (function() {
    this.myProperty = "10";
    this.myMethod = function(value) { }
})();

您的“类”只定义足够长的时间来分配一次,因为您永远不会实例化第二个副本。

对于非单身人士,我倾向于遵循TypeScript页面上的模式:

var Greeter = (function () {
    function Greeter(message) {
        this.greeting = message;
    }
    Greeter.prototype.greet = function () {
        return "Hello, " + this.greeting;
    };
    return Greeter;
})();

var greeter = new Greeter("world");

答案 1 :(得分:2)

  

另外,我在谈论一般情况,在这种情况下,它是一个单身人士。我只想要使用它的一个副本。

在这种情况下,只需直接创建对象:

var myProject = {
    myProperty: "10",
    myMethod: function() { ... }
};

创建对象的时间和地点无关紧要,只要您可以随时随地访问它。