gpt4 book ai didi

javascript - 中断原型(prototype)函数传播

转载 作者:行者123 更新时间:2023-11-30 18:42:10 25 4
gpt4 key购买 nike

在每个表单字段上触发事件,我使用原型(prototype)函数启动数据控件。如果它在数组内容 listdatatypes 中找到当前对象 id obj.id 的字段类型,那么它会进一步处理一些正则表达式控件(当然,有一个php 覆盖层但没有 Ajax,因为我想避免重新编码所有内容)。

这就像一个魅力,但我想知道一旦找到针,如何中断阵列针搜索的传播(例如所谓的原型(prototype) 2)。

代码原理如下:

// proto 1
if (!String.prototype.Contains) {
String.prototype.Contains = function(stack) {
return this.indexOf(stack) != -1;
};
}

// proto 2
if (!Array.prototype.forEach) {
Array.prototype.forEach = function(my_callback)
{
var len = this.length;
if (typeof my_callback != "function")
throw new TypeError();

var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in this)
my_callback.call(thisp, this[i], i, this);
}
};
}

// ... main code abstract

function str_search(element, index, array){
// Store the found item ... and would like to stop the search propagation
if (element.Contains(obj.id) )
stored_id = obj.id;
}
listdatatypes.forEach(str_search) ;


// ...

谢谢

最佳答案

如果您问是否可以打破 forEach 循环,答案是否定的。

您可以在传递给它的函数中设置一个标志来禁用代码的主要部分,但仅此而已。循环将一直持续到结束。

如果你想打破循环,使用传统的for循环代替,或者写一个自定义的forEach类型的方法,可以根据返回值来打破你的函数参数。


编辑:

这是一个 while,它会在您返回 false 时中断。

Array.prototype.while = function(my_callback) {
var len = this.length;
if (typeof my_callback != "function") throw new TypeError();

var thisp = arguments[1];
for (var i = 0; i < len; i++) {
if (i in this) {
var ret = my_callback.call(thisp, this[i], i, this);
if (ret === false) {
break;
}
}
}
};

您的代码:

function str_search(element, index, array){
if (element.Contains(obj.id) ) {
stored_id = obj.id;
return false;
}
}
listdatatypes.while( str_search );

关于javascript - 中断原型(prototype)函数传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6560120/

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