gpt4 book ai didi

Javascript hasOwnProperty 在 Google Chrome 下不起作用

转载 作者:行者123 更新时间:2023-11-30 23:47:35 25 4
gpt4 key购买 nike

我目前正在一个项目上工作,在一些帮助下,一直进展顺利,直到这次事件发生。

  function runCommand(commandString)
{
commands = new Object();
commands.clear = function(){ $('#terminal').html('') }

parameters = commandString.split(" ");
command = parameters.shift();
if( commands.hasOwnProperty(command)){
commands[command](parameters);
}
else
{
$('#terminal').append(command+' command not recognized.'+'<br>');
}
}

帮助我的人制作了这个功能,这样我就可以运行我需要使用的“类似终端”的浏览器。

使用 Firefox 时效果很好,下面是一个例子:

guest@shell:/$ sudo make me sandwich
sudo command not recognized.
guest@shell:/$ clear

*clears*

guest@shell:/$ clear

但是在 google chrome 下会发生这种情况:

guest@shell:/$ sudo make me sandwich
sudo command not recognized.
guest@shell:/$ clear
clear command not recognized.

我相信它与“commands.hasOwnProperty(command)”有关,导致它无法正常工作。

我正在使用 JQuery javascript 库来构建网站,我需要知道如何解决这个问题,或者替代方案。

最佳答案

非常高度怀疑Chrome在hasOwnProperty方面有任何问题,但无论哪种情况,我都清理了您的代码并将hasOwnProperty检查更改为typeof检查,这也应该稍微更强大:

var runCommand = (function () {
var terminal = $('#terminal');

var commands = {
clear: function () {
terminal.html('');
}
};

return function (commandString) {
var parameters = commandString.split(" ");
var command = parameters.shift();

if (typeof commands[command] === "function") {
commands[command](parameters);
} else {
terminal.append(command + ' command not recognized.<br />');
}
};
}());

...如果您好奇,我将命令对象存储在闭包中,这样它只需要创建一次,而不是每次运行函数时都创建/销毁。显然,这要快得多。

此外,我只对 #terminal 元素运行一次搜索,然后将其存储在变量中并使用它。这也是为了性能,因为运行 jQuery 搜索比存储结果并重复使用它要昂贵得多。

关于Javascript hasOwnProperty 在 Google Chrome 下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2574174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com