gpt4 book ai didi

javascript - javascript中的自定义对象数组 - 消除空出现

转载 作者:行者123 更新时间:2023-11-30 00:04:31 25 4
gpt4 key购买 nike

我有一个自定义对象,我想创建一个数组。创建我的数组时,它会创建一个空属性事件,我明白为什么,但我想避免这种情况。我意识到我可以只删除具有空属性的事件,但是有更好的方法吗?

function FileToPassBack(path, originalFileName, modifiedDate, newFilename) {
if (!(this instanceof FileToPassBack)) {
return new FileToPassBack(namepath, originalFileName, modifiedDate, newFilename);
}
this.Path = path;
this.OriginalFileName = originalFileName;
this.ModifiedDate = modifiedDate;
this.NewFileName = newFilename;
}

function PostSelectedItems() {
var allFilesToPassBack = new Array(new FileToPassBack());

$('#fileNamesTable').find('tbody>tr:visible')
.each(function (index, element) {
var row = $(this);
if (row.find('input[type="checkbox"]').is(':checked'))
{
var path = row.find('.pathTDClass').html();
var originalFileName = row.find('.originalFileNameTDClass').html();
var modifiedDate = row.find('.modifiedDateTDClass').html();
var newFileName = row.find('input[class="newFileNameTDClass"]').val();

var currentFileToAdd = new FileToPassBack(path, originalFileName, modifiedDate, newFileName)
allFilesToPassBack.push(currentFileToAdd);
}
});

//post path, original file name, modified date, new file name
var objectAsJSON = JSON.stringify(allFilesToPassBack);
}

我是 JS 的新手,如果我偏离正轨,请原谅。

最佳答案

新数组(数字)

用数字创建一个新数组会用一定数量的空元素初始化它:

var a = new Array(5);
// a = ['','','','',''];

因此当你推送时它会添加一个新条目

a.push("a");
// a = ['','','','','', 'a'];

最佳做法是不要使用新数组,而是使用 [] 语法,因为它的性能更高。

var allFilesToPassBack = [];

JSON 字符串化

虽然它有效,但您需要注意,您在示例代码中对数组进行字符串化处理而不是 JSON。

更新

为什么 []new Array() 性能更高并被认为是最佳实践。

当你使用创建数组时

var a = [];

您是在告诉解释器创建一个新的运行时数组。根本不需要额外的处理。完成。

如果您使用:

var a = new Array();

你是在告诉解释器,我想调用构造函数“Array”并生成一个对象。然后它会在您的执行上下文中查找要调用的构造函数,然后调用它来创建您的数组。

为什么这是最佳实践?

与文字语法相比,new Array() 没有添加任何新内容,它只是用不需要的对象包装器包装数组,只是增加了调用 的开销Array 构造函数并围绕数组创建对象包装器。

另外在代码中定义了一个function Array(){}new Array()会从这个函数开始创建新的实例,而不是创建一个数组,它是一个极端情况,但如果您需要一个数组,只需使用 [] 声明即可。

You never need to use new Object() in JavaScript. Use the object literal {} instead. Similarly, don’t use new Array(), use the array literal [] instead. Arrays in JavaScript work nothing like the arrays in Java, and use of the Java-like syntax will confuse you.

Do not use new Number, new String, or new Boolean. These forms produce unnecessary object wrappers. Just use simple literals instead.

http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/

资源很多,但我会在这次更新中尽量减少。 new 被引入该语言是因为它对其他语言“熟悉”,作为一种原型(prototype)语言,新语法是无用且错误的,相反该语言应该有 Object.create。但那是一个不同的主题,您可以从 Kyle Simpson 或 Douglas Crockford 等专家那里了解更多相关信息。

关于javascript - javascript中的自定义对象数组 - 消除空出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39037492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com