gpt4 book ai didi

javascript - 带有原型(prototype)的 javascript 中的 for() 上的 "this[key]"

转载 作者:行者123 更新时间:2023-11-30 18:40:49 28 4
gpt4 key购买 nike

我在这个脚本的第 5 行有一个 JS 错误 (var el = this[key];)。它适用于 FF、Chrome、Safari,但不适用于 IE。有人可以帮助我吗?

Object.prototype.between = function( value )
{
var value = parseFloat(value);
for (key in this) {
var el = this[key];
var v = key.split('-');

var min = parseFloat(v[0]);
var max = parseFloat(v[1]);

if (value >= min && value < max) { return el; }
}
return false;
}

感谢提前

最佳答案

您很可能遇到了“unfiltered for/in”问题。 IE 在迭代 for/in 循环时会遍历对象的所有属性和方法,以包括它从原型(prototype)中获得的那些属性和方法。这会导致几个问题,因为您的代码通常假定它只会遇到某种属性。最通用的过滤 for/in 的方法如下所示,我确保当前元素实际上是被迭代对象的属性,而不仅仅是继承的东西。通过确保当前属性正是您期望的类型、实例或值,您可以在此类检查中获得更具体的信息。

Object.prototype.between = function( value )
{
var value = parseFloat(value);
for (key in this) {
if( Object.prototype.hasOwnProperty.call( key, this ) ) {
var el = this[key];
var v = key.split('-');

var min = parseFloat(v[0]);
var max = parseFloat(v[1]);

if (value >= min && value < max) { return el; }
}
}
return false;
}

如评论中所述,您还可以对代码执行其他操作以使其更可靠且更不易出错。您应该开始养成通过 http://www.jshint.com 运行所有代码的习惯。

关于javascript - 带有原型(prototype)的 javascript 中的 for() 上的 "this[key]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6912249/

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