簡體   English   中英

Underscore.js映射不適用於新對象

[英]Underscore.js map not working with new objects

我在使用underscore.js _.map函數時遇到了一些非常奇怪的行為。

似乎當我嘗試“更新”函數內部的對象時,它失敗了。 但是在函數內部沒有新對象的情況下,它可以按預期工作。 我在這里想念什么嗎?

以下內容不起作用(即不打印任何內容)。 創建新對象后似乎失敗了:

var test = { a: "test" };

var foo = _.map(data.A, function (dataItem) {
    var a = new test();

    console.log(a);
    return a;
});

但這確實有效:

var test = { a: "test" };

var foo = _.map(data.A, function (dataItem) {
    var a = dataItem;

    console.log(a);
    return a;
});

上面記錄了data.A數組中的所有項目。

您的代碼無法正常工作的原因是由以下幾行引起的:

var test = { a: "test" };

var a = new test;

您必須將test聲明為一個函數:

var test = function () {
   return  { a: "test" };
}

為了使用new運算符

該問題與underscore.js或map函數無關,但與javascript通常無關。

這實際上不是Underscore.js問題,而是更多的JavaScript對象問題。 由於test是對象文字,因此您需要使用Object.create() 這將進行test並創建一個新對象

var a = Object.create(test);

小提琴

參考: 使用對象文字創建新對象

MDN Object.create ***

***如果由於瀏覽器限制而無法訪問Object.create ,則此MDN頁面的底部具有polyfill功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM