0

下面的示例使用的技术名称是什么,用于将变量传递给 javascript 中的对象?此外,为什么它不起作用(“大”没有按预期输出到控制台日志)?

var thumbnailBlock = new ThumbnailBlock();
thumbnailBlock.thumbnailSize = "large";


function ThumbnailBlock() {

    this.thumbnailSize;

    console.log("DEBUG");
    console.log(this.thumbnailSize);
}
4

3 回答 3

4

Willem Mulder 的回答解释了你的代码出了什么问题:

没有具体的名称。您只需设置一个对象属性。

不会输出“大”,因为您首先使用 ThumbnailBlock 构造函数(它记录 this.thumbnailSize)创建了一个对象,然后才将 .thumbnailSize 设置为“大”。

您可以将大小作为函数参数传递。

function ThumbnailBlock(size) {
    this.thumbnailSize = size;
}

var thumbnailBlock = new ThumbnailBlock("large");

console.log(thumbnailBlock.thumbnailSize);

另外,请查看该页面上的构造函数模式和其他不错的模式。我还推荐免费书籍Eloquent JavaScript中关于 OOP 的章节

于 2012-07-10T11:46:45.637 回答
2

没有具体的名称。您只需设置一个对象属性。

不会输出“大”,因为您首先使用 ThumbnailBlock 构造函数(它记录 this.thumbnailSize)创建了一个对象,然后才将 .thumbnailSize 设置为“大”。

于 2012-07-10T11:46:06.963 回答
1

正确的答案已经给出,我只想指出,如果您的对象是sealfreeze ,添加动态属性将不起作用。

function ThumbnailBlock(size) {
    Object.seal(this);
}

var thumbnailBlock = new ThumbnailBlock("large");
thumbnailBlock.thumbnailSize = 10;

console.log(thumbnailBlock.thumbnailSize); // undefined

严格模式下,您将引发异常。

于 2012-07-10T14:04:41.830 回答