Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在浏览器中使用基于类的OOP JavaScript?_Javascript_Oop - Fatal编程技术网

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

如何在浏览器中使用基于类的OOP JavaScript?,javascript,oop,Javascript,Oop,我一直在将我的过程JS函数转换成一个类,现在我想知道什么时候实例化它 这是我的班级: MyProject = function() {}; MyProject.prototype.myProperty = "10"; MyProject.prototype.myMethod = function (value) { // do something } 这是我的HTML页面: <script src="javascriptfilesdirectory/MyProject.js

我一直在将我的过程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()" >

另外,我说的是一般情况,在这种情况下,它是一个单身汉。我只想要一份在用的

如果你真的想成为单身汉,你可以做得更简单,比如:

var myProject = new (function() {
    this.myProperty = "10";
    this.myMethod = function(value) { }
})();
您的“类”定义的时间只够分配一次,因为您永远不会实例化第二个副本

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


如果你真的想要单身,你可以做得更简单,比如:

var myProject = new (function() {
    this.myProperty = "10";
    this.myMethod = function(value) { }
})();
您的“类”定义的时间只够分配一次,因为您永远不会实例化第二个副本

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

另外,我说的是一般情况,在这种情况下,它是一个单身汉。我只想要一份在用的

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

var myProject = {
    myProperty: "10",
    myMethod: function() { ... }
};
创建对象的时间和地点无关紧要,只要您在需要的时间和地点可以访问它

另外,我说的是一般情况,在这种情况下,它是一个单身汉。我只想要一份在用的

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

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

创建对象的时间和地点无关紧要,只要您能够在需要的时间和地点访问它。

JavaScript没有类,它有原型。它们允许相同类型的事情,但以不同的方式工作,并且试图强迫其中一个像另一个一样工作,或者把它们看作是相同的,这可能比学习基于原型的继承实际上是如何工作的更让人困惑。我会记住这一点。ThanksJavaScript没有类,它有原型。它们允许相同类型的事情,但以不同的方式工作,并且试图强迫其中一个像另一个一样工作,或者把它们看作是相同的,这可能比学习基于原型的继承实际上是如何工作的更让人困惑。我会记住这一点。Thankso myProject是在首次定义时实例化的吗?如果没有在原型上定义方法和属性,那么这些方法和属性并不重要,因为只有在正确的情况下才会调用它们?是的,这两个语句听起来都是正确的。如果您认为有可能要脱离单例并定义一个可重用的类型,那么最好只使用原型模式,这样以后重构就更容易了。那么myProject在第一次定义时就被实例化了?如果没有在原型上定义方法和属性,那么这些方法和属性并不重要,因为只有在正确的情况下才会调用它们?是的,这两个语句听起来都是正确的。如果您认为有可能要脱离单例并定义一个可重用的类型,那么最好只使用原型模式,这样以后重构就更容易了。