让我们考虑以下是我的对象:
var n = {"aa":"x","dd":'d'};
Run Code Online (Sandbox Code Playgroud)
我在中使用方括号Object.assign。它给出以下结果。[aa: "x", dd: "d"]。最终的代码是:
var n = {"aa":"x","dd":'d'};
var m = Object.assign([],n);
// result is
[aa: "x", dd: "d"]
Run Code Online (Sandbox Code Playgroud)
在console.log中__proto__告诉它是Array,如果它是以下代码给出的array,unexpected token error
var v = ["sss":"ddd","ccc":"ddd"];
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
这是我正在做的事情的例子:
var size = new Array("S", "M", "L", "XL", "XXL");
var color = new Array("Red", "Blue", "Green", "White", "Black");
var options = new Array( size, color);
Run Code Online (Sandbox Code Playgroud)
我正在做一个循环选择形式的东西,它工作正常,但我想获取数组子名称,在这种情况下 - 大小或颜色.当我正在做警报(选项[0])时,我得到了数组的整个元素,但是对于某些特定情况,我想只得到数组名称,这就像我已经说过的那样是大小/颜色.有没有办法实现这一目标?谢谢
我来自传统的Web开发人员背景,在这里我无法宣称对Javascript有任何了解,但我正在努力.
我目前对JQuery的理解是一个相当新手的理解,对闭包的理解稍微好一些,而且我已经阅读过了,并且觉得我对Douglas Crockford的"Javascript:The Good Parts"非常清楚.
我最近一直在构建一些相当javascript密集的页面,我对结果非常满意.需要注意的一点是,我设法完成了几乎没有全局函数的整个事情,甚至没有使用new运算符.
事实上,从我对上述书籍的阅读中,操作员什么也做不了你不能做的另一种更简单的方法,并迫使你破解'this'变量.
那么有什么我想念的吗?新操作符实际上是出于某种目的还是仅仅是一种让OO程序员在功能语言中感到舒适的技巧?我会更好地从我的JS词汇中完全打击它吗?
我不明白为什么当我使用JavaScript文件运行JSLint时收到错误消息.
os_map = {}; Problem at line 28 character 36: Use the array literal notation [].如果我在JSLint中运行此代码,我会收到消息var .JSLint的选项如下.
/*jslint onevar: true, browser: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true */
Run Code Online (Sandbox Code Playgroud)
声明对象(,它{})应该没问题,但JSLint建议使用空数组(,这是[])
:我找到了答案.我错了.这没什么不对var os_map = {}.代码显示在错误消息中,因为我没有使用"require strict";.我收到错误消息错误.谢谢回答我的问题.
我一直在尝试使用Jquery array.push()函数将下拉列表中的变量添加到数组中,但由于某些奇怪的原因它无法正常工作.以下是jsFiddle链接:http: //jsfiddle.net/dKWnb/3/
JavaScript:
$("#test").live("click",function() {
var myarray = new Array();
myarray.push($("#drop").val());
alert(myarray);
});
Run Code Online (Sandbox Code Playgroud)
HTML
<Select name=drop id=drop>
<option value=1>1</option>
<option value=2>2</option>
</select>
<input type=button name=test id=test value=test>
Run Code Online (Sandbox Code Playgroud) 我迷失在杂草中的V8来源以及关于这个主题的文章,我发现了一篇博文,其中说:
如果你被迫填充一个包含异构元素的数组,那么让V8早期通过使用数组文字来了解,特别是使用固定大小的小数组.
let array = [77, 88, 0.5, true]; //V8 knows to not allocate multiple times.
Run Code Online (Sandbox Code Playgroud)
如果这是真的,那么为什么会这样呢?为什么是数组文字?对于通过构造函数创建数组而言,有什么特别之处?作为V8源的新手,很难追踪均匀/异构阵列的差异所在.
此外,如果回答者可以指向我相关的V8来源,那将不胜感激.
编辑:我的问题略有说明(数组文字与数组构造函数)
在JavaScript中,您可以创建一个新数组,如:
var arr = new Array();
Run Code Online (Sandbox Code Playgroud)
或者喜欢:
var arr2 = [];
Run Code Online (Sandbox Code Playgroud)
有什么区别,你为什么要做另一个?
为什么这个:
[undefined, undefined].map(function(i) { console.log(i); })
Run Code Online (Sandbox Code Playgroud)
产生预期的输出(2次undefined),但是:
(new Array(2)).map(function(i) { console.log(i); })
Run Code Online (Sandbox Code Playgroud)
不?
写作更好吗?
var arr=[]; then var arr=new Array();
var obj={}; then var obj=new Object();
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
我阅读了关于这个想法的幻灯片第36页,但没有给出解释或示例为什么它更好.
我正在尝试创建一个JavaScript ARRAY,并获取元素的子项名称.
(我不需要span元素,只需输入,选择和textarea)
HTML:
<div id="new">
ID: <input name="id" />
<span>Date: </span>
<input name="date" />
<select name="status">
<option>New</option>
<option>Old</option>
</select>
<textarea name="memo"></textarea>
... etc.
</div> <!-- END: #new -->
Run Code Online (Sandbox Code Playgroud)
jQuery的:
var elements=new Array();
$("#new").each(function()
{
elements = $(this).children('input, select, textarea').attr("name");
});
Run Code Online (Sandbox Code Playgroud)
使用此代码,我只获得1个元素的名称("id").当我测试数组时,索引为0,它可以工作.但是当我使用不同的索引时,说...提醒"日期"或"状态",它不起作用:
alert( elements[0] ); //Output: "id"
alert( elements[2] ); //Output: "undefined". It should alert "status" instead
Run Code Online (Sandbox Code Playgroud)