首先,最重要的是,我正在尝试检测方法链的结束调用.我还想设法一种方法来检测我在方法链中的方法调用中有多少方法"进入"或"向下"一个对象链.
例如,在我写的插件中:
var result = $("#someDiv").myPlugin.foo().bar()._foo()._bar();
Run Code Online (Sandbox Code Playgroud)
假设该方法当前正在.bar()中执行我想知道我是链中的两种方法.
我需要以某种方式抽象这些信息的原因是当我到达链中的最后一个方法时,我可以返回一个结果而不是插件对象,从而在该点打破链,以便获取对我们数据的访问权限. '结果'变量.
所以我有一个简单的isPlainObject方法用于测试JavaScript对象文字:
var isPlainObject = function (obj) {
return typeof obj === "object" && {}.toString.call(obj) === "[object Object]";
};
Run Code Online (Sandbox Code Playgroud)
现在我有一个普通的对象:
var obj = {'one': 1, 'two': 2, 'three': 3};
Run Code Online (Sandbox Code Playgroud)
当我通过该isPlainObject(obj)函数运行它时,它按预期工作并返回true.我的问题来自于向对象的原型添加属性:
obj.constructor.prototype.four = 4;
Run Code Online (Sandbox Code Playgroud)
现在,当我isPlainObject(obj)继续obj它返回false.在两个实例中都typeof obj返回 我在向原型添加属性后的第二个实例中object的toString返回[object Number].
究竟发生了什么变化obj?这是怎么回事?
编辑:只有在QUnit函数调用的范围内进行测试时才会发生这种情况.
test("each", function() {
_.each([1, 2, 3], function(i,v) {
equal(v, i + 1, 'each iterator provided index and value …Run Code Online (Sandbox Code Playgroud) 有没有办法可以加载一个初始脚本(页面顶部的文件),然后在页面继续加载时尝试拦截所有其他资源请求(脚本,css,图像等)?
此拦截的目的是以不依赖于应用程序/页面如何组合在一起的不可知方式从缓存(localStorage,indexedDB,other)或甚至通过webrtc从远程对等方提供文件.
我知道缓存清单/离线方法,但这里的重点是获取所请求的资源并从选择的位置代理它.
为什么JavaScript允许您将数组与单个数值乘以另一个数值或另一个具有单个数值的数组?:
[3] * 3;
// 9
[3] * 2;
// 6
[3] * [3];
// 9
[1, 2] * 2
// NaN
Run Code Online (Sandbox Code Playgroud)
我希望NaN每次都能返回,但是我在Chrome中的实验证明情况并非如此.
这是预期的行为吗?这种行为有意义吗?如果是这样,为什么?