Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript';s*this*关键字从string.prototype中指向窗口_Javascript_Prototype_This - Fatal编程技术网

JavaScript';s*this*关键字从string.prototype中指向窗口

JavaScript';s*this*关键字从string.prototype中指向窗口,javascript,prototype,this,Javascript,Prototype,This,好吧,这可能会为我赢得“每日头条”徽章 为什么此在下面的代码中指向窗口 if (!String.prototype.Trim) { String.prototype.Trim = function() { var result = this.replace(/^\s+|\s+$/g, ""); return result; }; } 据我所知,这个应该计算为当前字符串实例的值。而是对当前窗口对象求值。因此,以下方面惨遭失败: var ba

好吧,这可能会为我赢得“每日头条”徽章

为什么
在下面的代码中指向
窗口

if (!String.prototype.Trim)
{
    String.prototype.Trim = function()
    {
        var result = this.replace(/^\s+|\s+$/g, "");
        return result;
    };
}
据我所知,
这个
应该计算为当前字符串实例的值。而是对当前窗口对象求值。因此,以下方面惨遭失败:

var baz = 'foo bar      '.Trim();
请注意,此代码已经使用了相当长的一段时间,并且基于我在intartoobs上看到的到处都是的广告代码。因此,这种模式似乎是推荐的方法。我不明白为什么
这个
没有指向我认为它应该指向的数据。(在Visual Studio中,当我将鼠标悬停在它上方或在“监视”窗口中查看它时,它显示为
[对象窗口]

(IE 8[32位];Win7;普通ole HTML页面。)

在Visual Studio中,当我将鼠标悬停在 或者在“手表”窗口中查看, 它显示为[对象窗口]


听起来像是VS中的一个范围解析错误。这不可能是IE中的错误,否则数千个原型函数将被破坏。

我最近遇到了这个问题,发现原因是JS捆绑包损坏了我的代码。我可以通过在匿名函数中封装代码修改
String.prototype
,然后调用它来修复它

因此,不是:

String.prototype.myFunction = function () { ... }
我不得不写:

(function () {
    String.prototype.myFunction = function () {
        ...
    }
})();

似乎对我来说很好(即使在IE6中)。你能发布更多的上下文吗?是的…对我来说很好。检查您是否确实在浏览器上尝试过它,或者这只是在VS中进行的?您如何测试/调试此代码?我正在研究这个问题,并认为问题与Trim函数(或者可能是“var baz=…”函数)的执行上下文有关。window对象是IE中的全局对象,我怀疑您的函数是在全局上下文中执行的,这导致“this”解析为“window”…我正在Visual STudio中执行此操作。我将重置从IE启动的项目,以验证问题不是由WebDev引起的。此外,还涉及其他原型功能。我将消除所有其他问题,并将它们逐一添加回去,以查看其中是否有一个是导致问题的原因。我会把结果告诉你们的!谢谢你的反馈!当我“捆绑”或“打包”一段Javascript代码以减小其大小时,我也遇到了这种情况。