小编Cmc*_*Cmc的帖子

JavaScript类和变量范围

我是JS的新手,我遇到了正确模仿OOP原则的问题.

我想我有两个问题.问题首先是关于声明变量的许多方法.

说我有一节课:

function clazz(a)
{
    this.b = 2;
    var c = 3;
    this.prototype.d = 4; // or clazz.prototype.d = 4?
}

var myClazz = new clazz(1); 
Run Code Online (Sandbox Code Playgroud)

我在以下评估中是否正确:

a是一个特定于实例的私有变量(即clazz的不同实例将具有唯一且独立的变量'a').它可以从clazz中访问:'a'.

b是一个特定于实例的公共变量.它可以在clazz中作为'this.b'访问,也可以从外部clazz访问'myClazz.b'.

c是一个静态或类特定的私有变量(即clazz的不同实例将共享相同的'c'变量).它可以在任何clazz实例中以"c"的形式进行访问,并且clazz实例中的更改会反映在clazz的所有实例中.

d是一个静态/类特定的公共变量.它可以通过'clazz.prototype.d'或'myClazz.prototype.d'从任何地方访问.

我对变量方案的理解的总体问题是,没有办法声明非静态的私有变量(即每个类的实例的唯一版本).

第二个问题是关于不同类型的类声明.

我一直在用:

var MySingleton = new function() {...};
Run Code Online (Sandbox Code Playgroud)

创造单身人士.它是否正确?我也不确定在这种情况下"new"关键字的效果以及在声明结尾附加()函数括号如下:

var MySingleton = new function() {...}();
Run Code Online (Sandbox Code Playgroud)

我一直在使用这种模式声明一个类,然后实例化该类的实例:

function myClass() {...};
var classA = new myClass();
var classB = new myClass();
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

javascript variables class

13
推荐指数
1
解决办法
2万
查看次数

标签 统计

class ×1

javascript ×1

variables ×1