javascript new不会创建新对象

时间:2014-11-01 19:35:59

标签: javascript class oop object

我试图从同一个类定义中获取两个对象。但是它们似乎共享相同的属性。我该怎么办?

http://jsfiddle.net/dagod/nuam8dks/2/

myclass = function() {
    this.data.push(Math.random(1000));
};

myclass.prototype.data = [];

a = new myclass();   
b = new myclass();
console.log(a.data);
console.log(b.data); //same as a.data

4 个答案:

答案 0 :(得分:0)

我刚刚做了其他事情!

myclass = function() {
    this.data = [];

};

现在您只需执行myclass.data =

即可访问它

就我个人而言:

var MyNameSpace = {
  SomeFunction: function() { 
    Some code
  };
  this.somevariable = somevalue;
};

然后你可以去myNameSpace.myfunction()或myNameSpace.myVar = Value

答案 1 :(得分:0)

见elclanrs的评论。

var Myclass = function() {
    this.data = [];
    this.data.push(Math.random(1000));
};

答案 2 :(得分:0)

您需要在构造函数中声明您的成员变量,而不是让它们成为原型的一部分。在javascript中oop可能是丑陋和不直观的。 (这就是为什么有那么多的oop库用于javascript)

Using ds.oop

ds.make.class({
    type: 'MyClass',
    constructor: function(x){
        this.a = x;
    }
});

var c1 = new MyClass(1);
var c2 = new MyClass(2);

console.log( c1.a ); // output: 1
console.log( c2.a ); // output: 2

答案 3 :(得分:-1)

您可以按如下方式获得所需的结果:

myclass = function() {
    this.data = Math.random(1000);
};

//myclass.prototype.data = [];

var a = new myclass();   
var b = new myclass();

jsfiddle