gpt4 book ai didi

javascript - 在 JavaScript 中构建类的正确方法?

转载 作者:数据小太阳 更新时间:2023-10-29 05:16:50 24 4
gpt4 key购买 nike

我是 JavaScript 的新手,正在尝试了解我应该如何编写类(我的“常规”OO 语言背景,例如 java 和 c++)。

我知道我有两个选择:

  1. 如果我希望我的类有私有(private)方法和成员,我不能在原型(prototype)中定义它们。但在那种情况下,它们将为每个创建的新对象构建(内存问题)。

  2. 如果我在类原型(prototype)中定义方法,我将没有封装(这对我来说很奇怪,作为 java/c++ 开发人员:P)。

您使用这两种方法中的哪一种?为什么?

最佳答案

因此,我认为这个问题没有“正确答案”……它基本上是您喜欢的,并且认为最适合您的特定用途。我的许多类(class)都是“静态类(class)”,例如

var MyClassName = {
methodName: function() { },
//...
}

因为我从不需要实例化它们。当我需要实例化多个实例时,我使用原型(prototype)方法。

如果您需要私有(private)变量,您可以定义一个函数/类来处理私有(private)变量,以及需要在该函数/类中访问这些私有(private)变量的方法。然后,对不需要访问私有(private)变量的所有方法使用原型(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");
}

同时执行这两项操作应该可以让您的实例化更轻一些,但仍然会给您一些封装。到目前为止,我从来没有为私有(private)变量烦恼过。

关于javascript - 在 JavaScript 中构建类的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5994007/

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