由于我在这里发布的关于一些javascript框架将是数组对象原型的问题,而其他一些代码(论坛引擎)确实使用了For...in循环来循环数组,当我将javascript框架插入到这些现有代码中时,事情就会出错。
//BEFORE
for(key in [1,2,3,4]) console.log(key) //0,1,2,3 keys of the array
//After JS Framework
for(key in [1,2,3,4]) console.log(key) //0,1,2,3,$family,$constructor,pop,push,reverse,shi
我注意到,在我的javascript中,如果我创建一个空数组,将其作为关联数组循环,并打印出内容,它将返回类似于array对象类本身的函数。下面是我的代码:
var test = new Array();
for(var i in test){
document.write(i + " " + test[i] + "<br>");
}
alert(test.length); // this returns 0
上面的代码打印以下代码(我省略了一些输出,因为它有点长)
$family function (){return u; }
$const
Array.prototype.testi = function() {console.log('hep');}
var b = new Array();
b.push(1, 5, 'b', 'c');
for (var i in b) {
console.log(b[i]);
}
这将会记录(在chrome中)
1
2
b
c
function () {console.log('hep');}
或中的实时示例
我的问题是,为什么清单中显示的函数是给数组原型的呢?
这意味着扩展未使用的浏览器功能(例如。例如,如果使用数
我目前正在创建一个网站,并有一些javascript,除IE7和IE8以外的所有浏览器的工作。我已经通过插入几个'alert‘语句对代码进行了一些测试,并推断出javascript在一个特定的'if’语句处中断。它也不是'if‘语句中的代码,因为我也测试过这个。
我自己看不出实际的' if‘语句有什么问题,但如果IE7/IE8和我生成的代码有问题,请让我知道。代码可以在下面看到。
提前感谢您的帮助。
var Items = new Array("a","b","c","d");
var queryS
当我从画布执行getImageData()时,我得到了一个带有数据子对象的ImageData对象,这是一个钳位数组。我想检查我得到的每个像素是否都是白色的(并且不是透明的)。换句话说,我想检查数据对象中的每个值是否都等于255。显而易见的代码如下:
if (data.every(function(value) {return value == 255})) {
//Do something
}
但由于某些原因,它不能在钳位数组中工作,如下面的最小代码所示:
var DATA = new Uint8ClampedArray(3);
//var DATA = new Array
我正在使用工具来确保我的JavaScript是“严格的”。
我收到以下错误,但不知道如何修复它:
The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype
关于下列代码:
for (var i in keypairs) {
...
}
任何人都知道如何解决这个问题,使之成为JavaScript的“严格”,不会被JSLint标记
假设有一些库javascript对象jsObj。在调用Object.keys或Object.getOwnPropertyNames时,我会得到以下属性的列表
[a,b,c,d]
但我仍然可以调用像jsObj.e()这样的函数。为什么e方法不是Object.keys或Object.getOwnPropertyNames的一部分?他们是怎么做的?
,它说Object.getOwnPropertyNames也将返回不可枚举的属性。那么,像e这样的属性的特征是什么呢?
我正在使用服务器端SDK。使用以下代码,
var OpenTok = require('opentok');
var
我正在制作一个带有canvas标签的Javascript游戏,并且我正在使用一个增强的for循环来更新玩家的位置。
简而言之:
var actors = new Array();
var player = new Actor(0, 0, img);
actors[0] = player;
function update_positions() {
//position 1
for(var a in actors) {
//position2
a.xpos += a.xvel;
a.ypos += a.yvel;
}
在这种情况下,我需要创建一个从数组继承的新JavaScript对象。我使用了以下代码:
// Create constructor function.
var SpecialArray = function () {};
// Create intermediate function to create closure upon Array's prototype.
// This prevents littering of native Array's prototype.
var ISpecialArray = function () {};
ISpecialArray.
小提琴
小提琴
我有一个链接的选择框和一个Array.prototype函数,用于将两个数组组合成一个关联的array.They,它们用于不同的用途,并且是无关的。但是,当它们放在脚本中时,它给出了指向这部分this.forEach的undefined is not a function,它是错误的来源。我最终用这个函数()替换了Array.prototype函数:
function associate(keys, values){
return keys.reduce(function (previous, key, index) {
previous[key] =
例如,我有一个文本字符串:
<div id="ideal">The quick brown fox jumps over the lazy Stack Overflow user</div>
我想将的最后一个单词 ('user')包装在中以生成:
<div id="ideal">
The quick brown fox jumps over the lazy
Stack Overflow <span class="foo">user</span>
&
我正在学习JavaScript,我真的很想了解为什么这个函数不能工作。请解释我在这里做错了什么,我怎样才能让它发挥作用。我真的想保持简单,就像这样,这样我就能理解我做的是错的和正确的。
var input = prompt("Write a number");
function around() {
for (var x = 0; x < input.lenght ; x++) {
console.log(input.reverse());
}
}
around();
我是从python的背景来看javascript的,想问一下如何解释我看到的一些代码。
在Python中,我可以获得以下代码/输出:
Python代码:
myarray = ["a","b", "c"]
for item in myarray:
print (item)
Python输出
a
b
c
在Javascript中,这给了我一些不同的东西:
Javascript代码:
var myarray = ["a","b","c"]
for(var item in myarray){
co
在“学习JavaScript设计模式”一书的第109页中,有一个代码示例使我感到困惑。
jQuery.single = (function( o ){
var collection = jQuery([1]); // <-- i want to ask this line
return function( element) {
// give collection the element
collection[0] = element;
// return the collection
ret
我目前正在尝试在JavaScript中使用prototype。
为了试验这一点,我编写了一个函数,它允许您将where子句放到数组中:
Array.prototype.where=(function(){
var tmpArr=[],
success;
for (var x in this){
var success=true;
for (var i in arguments){
if (this[x][arguments[i][0]]!=arguments[i][1]){
success=false;
brea
似乎我不理解JavaScript中in关键字的含义。
看看下面的代码片段( ):
var x = [1,2]
for(i in x){
document.write(x[i]);
}
在jsfiddle中运行时,它不仅打印数组中包含的值,还打印数组对象的所有属性和方法。
当我像这样更改它时( ):
$(document).ready(function(){
var x = [1,2]
for(i in x){
document.write(x[i]);
}});
它只打印值1和2。
这一切为什么要发生?这是由jQuery引起的,还是in关键字的行为取决于文档是否完全加载?
在使用JavaScript的新数组函数时,我在以下代码中看到了性能上的一些主要差异:jsfiddle:
最慢的for var i in array (67.2ms):
for (var a=0;a<amount;a++) {
for (var b in arr) {
arr[b]++;
}
}
array.forEach (2.1ms):
for (var c=0;c<amount;c++) {
arr.forEach(function(e,i,a) {
arr[i]++;
});
}
(default)**for
我使用的是jQuery、jQuery mobile、prototype和photoswipe的组合。我意识到由于$快捷方式的使用,jQuery和prototype之间存在冲突。所以我做了一个jQuery.noConflict()。现在,在我的Firebug控制台中,它不再报告任何错误。但是,当我转到Firebug DOM标记时,我看到:
当我检查4725行时,它是var $continue = new Error('"throw $continue" is deprecated, use "return" instead');。这就是我在使用j
我在阅读下划线的源代码时,在_.initial中发现了一条注释
// Returns everything but the last entry of the array. Especially useful on
// the arguments object. Passing **n** will return all the values in
// the array, excluding the last N. The **guard** check allows it to work with
// `_.map`.
_.initial = function(array, n,
我知道...在JavaScript中的传播操作符。我们可以在数组和对象上使用它:
let user = {
name: "aman",
rollno: 11
}
let newobj1 = {...user}
let newobj2 = [...user]
console.log(newobj1)
console.log(newobj2)
为什么newobj2会给出一个错误,TypeError: user is not iterable,但是newobj1工作得很好?
我正在使用一些来自这里的调制解调器,!对于用javascript替换jquery,我有一个任意的问题。
我有一个函数,它在文档准备好后立即执行:
ready: function() {
$('.modal-trigger').leanModal(); // line 1 works
document.querySelector(".modal-trigger").leanModal(); // this line does not work
}
到目前为止,我的理解是可以用Javascript替换jQuery,但是第二行不能工作,因为我得到了以下
我们正在开发一个基于javascript的地理信息系统应用程序,一切都进行得很顺利,直到有人决定启动IE9,并让它在那里旋转一下。你可能已经猜到了,这个应用程序坏了。
结果发现,由于某些难以解释的原因,for..in循环无法在childNodes上迭代:
var xmldoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
xmldoc.loadXML("<i18n><item>one</item><item>two</item></i18n>"
下面是我检查过的JavaScript运行时(Node.js和火狐)的工作原理:
let xs = [0, 1, 2]
let it = xs[Symbol.iterator]()
for (let x of it) console.log(x)
这是因为it迭代器本身是可迭代的,也就是说它具有Symbol.iterator属性。可以假定这是因为Array.prototype[Symbol.iterator]是作为生成器实现的。
我的问题是,我是否可以依赖于it是可迭代的?也就是说,这是规格要求吗?
我已经看过了(我认为是相关的部分),我找不到任何东西表明数组迭代器应该是可迭代的,或者它必须用生
我的web应用程序的主JavaScript中有以下代码:
// uniq for arrays
if (!Array.prototype.getUnique) {
Array.prototype.getUnique = function () {
var u = {}, a = [];
for (var i = 0, l = this.length; i < l; ++i) {
if (u.hasOwnProperty(this[i])) {
continue;