相关疑难解决方法(0)

应该在JavaScript比较中使用哪个等于运算符(== vs ===)?

我正在使用JSLint来完成JavaScript,并且在执行诸如比较语句内部之类的事情时,它会返回许多建议来替换==(两个等号)===(三个等号).idSele_UNVEHtype.value.length == 0if

有没有性能优势,以代替=====

任何性能改进都会受到欢迎,因为存在许多比较运算符

如果没有进行类型转换,是否会有性能提升==

javascript equality operators equality-operator identity-operator

5666
推荐指数
41
解决办法
171万
查看次数

半沙盒Javascript评估

背景:我正在开发一个框架/库,用于与greasemonkey/userscripts协调的特定站点.该框架/库将允许插件支持.它的工作方式是一个插件寄存器,库中列出了所需的页面,资源,ectera和库将等到所有的critera都满足调用addon的load()功能.

问题:在这个"必需的东西"列表中,我希望addon devs能够指定javascript(作为字符串)作为"必需资源"进行评估.例如'document.getElementById("banana")'.我想要做的是半沙盒评估"必需资源",以便评估可以访问窗口和DOM对象,但不能直接改变它们.我也想制作eval,并且沙盒中的evalJS无法访问.


示例:

  • document.getElementById("banana") - >有效
  • document.getElementById("apple).id = "orange" - >无效
  • window.grape - >有效
  • window.grape = 'potato' - >无效
  • (someObj.applesCount > 0 ? 'some' : 'none') - >有效


到目前为止我所拥有的:

function safeEval(input) {

    // Remove eval and evalJS from the window:
    var e = [window.eval, window.evalJS], a;
    window.eval = function(){};
    window.evalJS = function(){};

    try {

        /* More sanition needed before being passed to eval */

        // Eval the input, stuffed into an …
Run Code Online (Sandbox Code Playgroud)

javascript greasemonkey eval sandbox

5
推荐指数
1
解决办法
5179
查看次数

我试图将一个length()方法原型化为Object并打破jQuery - 怎么样?

我写了以下内容:

Object.prototype.length = function(){
    var count = -1;
    for(var i in this) count++;
    return count;
}
Run Code Online (Sandbox Code Playgroud)

有用.但是当我执行我的页面时,即使不使用这个函数,Firebug告诉我jQuery .appendTo()不再是一个函数.为什么会这样?

javascript methods jquery prototype object

4
推荐指数
1
解决办法
2630
查看次数