[英]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.