默认情况下使用值创建对象

时间:2012-03-01 21:38:39

标签: javascript constructor

function Base(x, y) { this._def=0,0; this.x=x; this.y=y; }

我想用两种方式创建一个对象:

  • 传递值

    var b = new Base(2, 3)
    

    (这是典型的方式)

  • 使用字段默认值“_def”中的值。对于该示例,0应该传递给'x',另一个0传递给'y'。 但我希望在另一个构造函数中使用和调用通用方法。

2 个答案:

答案 0 :(得分:0)

如果您在项目中使用jQuery,那么应该是这样的:

function Base(options) {
    this._options = $.extend( { x:0, y:0 }, options ) ;
    console.log( [this._options.x, this._options.y] );
}

var b = new Base({x:5, y:1});

这将输出

5,1

答案 1 :(得分:0)

我不确定这是你正在寻找的(this._def=0,0是无效的语法),但你可以尝试这样的事情:

function Base(x, y) { 
   if (this._def != null) {
      this.x = this._def[0];
      this.y = this._def[1];
   } else {
      this.x = x;
      this.y = y;
      this._def = [0,0];
   }
}

然后可以通过以下方式调用:

var obj = { _def = [1, 2] };
obj = Base.call(obj);

现在obj.x为1,obj.y为2。