小编pim*_*vdb的帖子

是什么让jQuery对象在Chrome的开发人员工具中显示为一个数组?

我想知道jQuery对象如何在Chrome中的Developer Tools的控制台日志中显示为一个数组.

例如,如果我执行$('<a>'),我在控制台日志中看到的是:

[<a>?</a>?]
Run Code Online (Sandbox Code Playgroud)

但以下陈述是错误的:

var a = $("<a>");

Array.isArray(a);   // false
a instanceof Array; // false
Run Code Online (Sandbox Code Playgroud)

我试图修改jQuery并看看会发生什么,令人惊讶的是,length从jQuery函数中删除会删除数组表示法:

length: 0, // commenting this line removes array notation
Run Code Online (Sandbox Code Playgroud)

相反,它会显示为(箭头是要展开的实体):

> jQuery.jQuery.fn.jQuery.init
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试创建我自己的构造函数,它应该以数组表示法显示,它不起作用:

var test = function() { this.length = 0 };

new test();

// Logged (arrow is same one as before):
// > test
Run Code Online (Sandbox Code Playgroud)

所以我想知道jQuery代码中的什么使Developer Tools将实例显示为数组.在jQuery中添加了什么属性/函数/东西,使得Developer Tools在显示实例时将其作为数组处理?

arrays jquery google-chrome instance

10
推荐指数
1
解决办法
1860
查看次数

.NET Framework 4 Client Profile + System.Web.dll?

我目前正在开发.NET 4 Client Profile的应用程序,因为这是通过Windows Update在大多数家用计算机上出现的版本.

但是,我无法添加引用,System.Web.dll因为它在此版本中不存在 - 我该怎么办?

将System.Web.dll与我的应用程序一起部署是一个好主意,还是不行?我真的需要HTTP连接和所有,所以我不能修改我的应用程序作为一种解决方法.将我的应用程序定位到.NET 4(没有客户端配置文件)可能是一种可能性,还是仅仅在仅具有客户端配置文件的计算机上工作?

.net dll system.web .net-client-profile

9
推荐指数
1
解决办法
1万
查看次数

如何获得调用函数的'this'值?

如果我有这样的功能:

function foo(_this) {
    console.log(_this);
}

function bar() {}
bar.prototype.func = function() {
    foo(this);
}

var test = new bar();
test.func();
Run Code Online (Sandbox Code Playgroud)

然后记录的test实例bar.

然而,对于这个工作,我需要传递thisbar.prototype.func功能.我想知道是否可以在通过的情况下获得相同的this值.this

我尝试使用arguments.callee.caller,但这会返回原型函数本身,而不是原型函数中的this值.

是否可以通过仅调用原型函数来记录test实例?barfoo()

javascript scope function this

9
推荐指数
1
解决办法
1万
查看次数

NETWORK_ERR:XMLHttpRequest异常101

我在Chrome中遇到了AJAX问题,出现以下错误:

Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

function IO(filename) {
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        xmlhttp = new XMLHttpRequest();

    } else if (window.ActiveXObject) { // IE
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) { }
        }
    }

    xmlhttp.open("GET", filename+"?random="+Math.floor(Math.random()*100000001), false);
    xmlhttp.send();

    if(xmlhttp.readyState==4)
        return xmlhttp.responseXML;
}
Run Code Online (Sandbox Code Playgroud)

javascript ajax google-chrome xmlhttprequest

9
推荐指数
2
解决办法
4万
查看次数

需要JavaScript Prototype解释

我通常在我的项目中以这种方式创建我的类...对象文字.

var objectName = {

     //global variables
      a : 'somevalue',

      func1: function(){

      },


      func2: function(){

      }

}
Run Code Online (Sandbox Code Playgroud)

如果我必须将其转换为原型格式,我该怎么做?

当使用这种格式完成工作时,使用原型比使用原型更有利.

为什么人们在原型上讲得那么多.

javascript prototype-programming

9
推荐指数
1
解决办法
5607
查看次数

如何检测Chrome扩展程序卸载

我试图检测我的扩展程序是否已卸载.

我无法使用,chrome.management.onUninstalled因为它会在其他扩展名上被触发.

javascript google-chrome-extension

9
推荐指数
3
解决办法
6270
查看次数

如何有效地从字节中读取位?

我的工作,包括网页套接字和服务器(Node.js的)和客户端(浏览器)之间的数据使用自定义的数据交换(很简单)格式我设置了发送的项目.

我正在发送3位数据,因为我发送的项目都有8种可能性.数据格式如下所示:

            0          1
bit index   01234567 8901...
item        aaabbbcc cddd...
Run Code Online (Sandbox Code Playgroud)

目前,我正在解析字节中的项目,如下所示:

var itemA = bytes[0] >> 5;
var itemB = (bytes[0] >> 2) & 7;
var itemC = (bytes[0] & 3) << 1 | bytes[1] >> 7;
var itemD = (bytes[1] >> 4) & 7;
Run Code Online (Sandbox Code Playgroud)

就个人而言,这感觉太复杂了.问题是,这只是复杂的,因为我得到以字节为单位,这是8的倍数解析出的3位项目的数据我有位移,做与运算,因为8是不被3整除我有时甚至必须将两个字节的部分组合起来itemC.

将这些数据作为3位组而不是8位组读取会更有效.

我想出的是将所有字节到比特串用.toString(2),然后用.substring得到长度为3子串,并转换回了一些parseInt(bitString, 2),但我想这是不这样做的方式,因为字符串操作很慢,我实际上没有做任何与字符串相关的事情.

是否可以读取例如3的组中的位而不是从字节中解析它们?或者是否有更有效的方法来读取字节外的位?

javascript parsing byte bit-manipulation node.js

9
推荐指数
1
解决办法
8808
查看次数

为什么我不能在nowjs中扩展每个人的口袋?

我正试图在每个人的pocket现状中提供功能.我想_.extend通过每个人的口袋这样做,即everyone.now.由于某些我无法理解的原因,_.extend无法在客户端正确提供功能.

这是我目前的代码:

var _ = require("underscore"),
    everyone = require("nowjs").initialize(app);

everyone.now.foo = function() {};

_.extend(everyone.now, {
    bar: function() {}
});

console.log(everyone.now.foo); // [Function]
console.log(everyone.now.bar); // undefined
Run Code Online (Sandbox Code Playgroud)

在服务器端和客户端,我都可以做得now.foo()很好.另一方面,now.bar()失败因为now.bar没有定义.客户端和服务器端都是这种情况.我试图在服务器端检查是否存在,如上一行所示.但是,此行记录undefined.

Underscore的extend功能(显然)对其他对象起作用,所以我猜它与现在使用的"魔术命名空间"有关.

如何扩展不起作用,everyone.now我怎样才能使它工作?


编辑2:我在代理中挖掘了更多.看起来像通过传递变量在代理上设置属性,因为它的名称不起作用.我删除了我的第一个编辑,因为这个测试用例更加狭窄.

为什么这不起作用?这是一个错误吗?(大多数时候我自己问这个问题我知道不是,但这真的让我无能为力......)

var proxy = Proxy.create({
    get: function(pr, name) {
        console.log("get called");
        return null;
    },

    set: function(pr, name, value) {
        console.log("set called");
    }
});

var key = "foo";

proxy["foo"] = "bar"; …
Run Code Online (Sandbox Code Playgroud)

javascript node.js underscore.js nowjs-sockets ecmascript-harmony

9
推荐指数
1
解决办法
438
查看次数

Uint32Array(buffer,byteOffset,length)无法按预期工作

根据MSDN我可以通过Uint32Array3种方式创建:

  1. new Uint32Array( length );
  2. new Uint32Array( array );
  3. new Uint32Array( buffer, byteOffset, length );

第一种和第二种方法效果很好,但第三种方法对我不起作用.这段代码有什么问题?

var buffer = new ArrayBuffer(8);
var uint32s = new Uint32Array(buffer, 4, 4);
uint32s[0] = 0x05050505;
var uint8s = new Uint8Array(buffer);
for (var i =0; i< 8; i++)
{
    alert(uint8s[i]);
}
Run Code Online (Sandbox Code Playgroud)

这当然很好,但当然byteOffset = 0.

var uint32s = new Uint32Array(buffer);
Run Code Online (Sandbox Code Playgroud)

javascript typed-arrays

9
推荐指数
1
解决办法
4936
查看次数

iPad AJAX 30分钟后调出错误

我正在构建一个旨在用于iPad的webapp(保存的书签,视口标签等).webapp每隔2分钟向一个不安全的服务器(例如,没有可以超时的会话cookie)发出AJAX请求(使用jQuery),返回JSON.

但是,30分钟后,请求停止进入服务器,我想停止从iPad发送.我查看了jQuery的错误回调的参数,显示textStatus == "Error"errorThrown == "".是的,没什么errorThrown,这也是我为什么神秘化的部分原因.

我尝试在30分钟后执行用户启动的AJAX调用,返回相同的错误.如果不清楚,javascript仍然在运行:它只是失败的AJAX调用.此外,除了iPad之外,这种行为不会发生在任何地方.

任何想法为什么会发生这种情况,或者如何解决它?

javascript jquery ipad ios

8
推荐指数
1
解决办法
642
查看次数