Eri*_*pir 6 javascript prototype-programming
我是JavaScript的新手,并试图理解我应该如何编写类(我的背景是'常规'OO语言,例如java和c ++).
我知道我有两个选择:
如果我希望我的类有私有方法和成员,我无法在原型中定义它们.但在这种情况下,它们将为每个创建的新对象(内存问题)构建.
如果我在类原型中定义方法,我将没有封装(这对我来说很奇怪,作为java/c ++开发人员:P).
您使用哪两种方法?为什么?
所以,我不认为对这个问题有一个"正确的答案"...它基本上是你喜欢的,并且认为最适合你的特定用途.我的许多课程都是"静态课程",例如
var MyClassName = {
methodName: function() { },
//...
}
Run Code Online (Sandbox Code Playgroud)
因为我永远不需要实例化它们.当我需要实例化多个实例时,我使用原型方法.
如果您需要私有变量,您可以定义一个函数/类来执行私有变量,以及需要访问该函数/类中的私有变量的方法.然后,对不需要访问私有变量的所有方法使用prototype方法.例如
var PageClass = function() {
var _birthdate;
this.getBirthdate = function() {
return typeof(_birthdate) == "undefined" ? null : _birthdate;
}
this.setBirthdate = function( date ) {
if( typeof(date) == 'object' && date.constructor == Date ) {
_birthdate = date;
}
else {
throw "Invalid Argument Exception: PageClass.setBirthdate expects parameter of type 'Date'";
}
}
}
PageClass.prototype.doSomething = function() {
alert("DOING SOMETHING");
}
Run Code Online (Sandbox Code Playgroud)
同时执行这两个操作应该可以使您的实例化更轻一些,但仍然会给您一些封装.到目前为止,我从未对私人变量感到烦恼.