JavaScript - 使用对象文字创建新对象(函数)?

时间:2014-07-25 03:31:46

标签: javascript object

我在JavaScript中定义了一个函数,它有两个属性:sizeurl

function IconInfo() {
    this.size = size;
    this.url = url;
}

在另一个函数中,我创建了一个IconInfo的新实例,并以这种方式设置属性:

function SomeFunction() {
    var icon = new IconInfo();
    icon.size = 64;
    icon.url = "http://somesite.com/image1.png";
}

是否有办法创建如下所示的实例:

  var icon = new IconInfo({
      size : 64,
      url  : "http://somesite.com/image1.png"
  });

我更喜欢这种符号,它看起来更简洁,更容易阅读。

=========================== 更新 ============ ====================

根据蒂姆的回答,采用以下方式:

var icon = {
  size : 64,
  url  : "http://somesite.com/image1.png"
};

我有以下问题。

假设我有两个具有相同精确属性和构造函数参数的函数:

function Func1(x) {
    this.x = x;
}

function Func2(x) {
    this.x = x;
}

我有一个容器,可以容纳任何一种类型:

function Container() {
    this.f = null;
}

如果我使用该方法添加其中一个函数,它实际上会是什么类型?

...
var container = new Container();
container.x = new f { // is f Func1 or Func2?
    x: 10;
}

2 个答案:

答案 0 :(得分:2)

有很多选择,但要保持简单..你可以这样做:

var icon = {
  size : 64,
  url  : "http://somesite.com/image1.png"
};

您不必声明"类型",但您可以......有点像这样:

function IconInfo(size, url)
  this.size = size;
  this.url = url;
);
var icon = new IconInfo(2, "www.google.com");

答案 1 :(得分:1)

你实际上可以使它更简洁。首先,您忘记在IconInfo内设置变量;它应该是这样的:

function IconInfo(size, url) {
    this.size = size;
    this.url = url;
}

要在您的其他功能中创建新的IconInfo,您只需要像这样调用它:

function SomeFunction() {
    var icon = new IconInfo(64, "http://somesite.com/image1.png");
}