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

Javascript 默认情况下使用值创建对象,javascript,constructor,Javascript,Constructor,我想用两种方法创建一个对象: 传递值 function Base(x, y) { this._def=0,0; this.x=x; this.y=y; } (这是典型的方式) 使用字段默认值“_def”中的值。对于该示例,0应传递给“x”,另一个0应传递给“y”。 但我希望在另一个构造函数中使用和调用通用方法 如果您在项目中使用jQuery,下面是它的用法: var b = new Base(2, 3) 这将输出 function Base(options) { this._opt

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

  • 传递值

    function Base(x, y) { this._def=0,0; this.x=x; this.y=y; }
    
    (这是典型的方式)

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


如果您在项目中使用jQuery,下面是它的用法:

var b = new Base(2, 3)
这将输出

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});

我不确定这是否是您想要的(
this.\u def=0,0
的语法无效),但您可以尝试以下方法:

5,1
可通过以下方式调用:

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];
   }
}

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

在JavaScript中,您只能有一个构造函数(按照惯例,您使用的构造函数是对象函数本身)。然后,可以使用另一个构造函数来传递字段“_def”和另一个构造函数?添加默认值(基本,基本._def)
var obj = { _def = [1, 2] };
obj = Base.call(obj);