Javascript类/静态变量

时间:2015-05-01 05:57:26

标签: javascript

我正在从Head First Javascript(Morrison)学习Javascript。

在一个示例中,作者通过执行以下操作,将变量“signature”声明为名为Blog的类的类属性:

    Blog.prototype.signature = "by Blogger-Name";

上述之间是否存在差异,并将其声明为如下所示?

    Blog.signature = "by Blogger-Name";

2 个答案:

答案 0 :(得分:3)

使用Blog时,.prototype的所有实例都会签名。所以当你实例化var blog = new Blog时。它将有一个signature property

如果您只是使用Blog.signature = x那么当您使用new创建对象时,它就不会出现。

答案 1 :(得分:1)

设置构造函数的static成员的属性会使属性从所有实例中可见(在读取时)。

这可以用来模拟C ++类的function Widget(x0, y0, x1, y1, name) { this.x0 = x0; this.y0 = y0; this.x1 = x1; this.y1 = y1; this.name = name; this.all_instances.push(this); } Widget.prototype.all_instances = []; var w1 = new Widget(10, 20, 30, 40, "First"); var w2 = new Widget(10, 20, 30, 40, "Second"); 成员,并且通常用Javascript表单方法完成(因为方法实际上只是常规数据成员,与C ++不同)。

一个例子,可以用来代替"数据"保留某个"类的所有实例"在容器中:

push

请注意,但是当写入这样的"静态"您正在创建的属性,而不是实例属性; .all_instances有效,因为它没有写入public void update(String url) { try { player.stop(); player.reset(); player.setDataSource(url); player.prepare(); player.play(); } catch (IOException exc) { exc.printStackTrace(); } } ,而是修改其内容(数组)。