gpt4 book ai didi

javascript - 方法自动生成

转载 作者:行者123 更新时间:2023-11-30 06:41:53 24 4
gpt4 key购买 nike

我正在考虑以下功能:

$('.aclass').MyPluginInit()
$('.aclass').SomeMethodOfMine()

但是我们如何从第一行到第二行呢?在理想的世界中,我能够捕获第 2 行中生成的异常(当我尝试调用一个不存在的方法时),循环遍历 $('.aclass') 表示并且对于每个,查看包含所述方法并通过调用 .MyPluginInit() 放置在那里的属性(例如,$this)。然后我会调用该方法。

问题是我无法捕获异常并找到返回引发异常的对象的方法。 window.onerror 的处理程序会告诉我产生异常的 url 和行号,但我无法将其绑定(bind)到对象。

关于我还能如何完成死者(或未出生者)的复活有什么想法吗?

  • 埃基斯

附注我读过Autovivification and Javascript ,但我要问的有点不同。

最佳答案

// define your initializer
function MyPluginInit () {
var e;
for (e in this) {

// give this object the method
this[e].SomeMethodOfMine = function () {
console.log("Wee!");
}
}
}

// call init using the array-ish thing returned by jQuery as `this`
MyPluginInit.call($(".aclass"));

// to call the method, you need to refer to an *element* in the array
// this is because we only gave the method to the elements, not to the array itself
$(".aclass")[0].SomeMethodOfMine();

我想不出一个很好的方法来做到这一点,但这段代码是实用的,不需要任何奇怪的全局异常处理。或者,您是否考虑过修改数组元素的原型(prototype)?然后您只需要在您的方法中包含一些逻辑来确定在元素未被“初始化”的情况下如何操作。

通常我会建议将 SomeMethodOfMine 添加到 jQuery 返回的对象的原型(prototype)中,但结果是 Object,所以这可能不是一个好主意。

关于javascript - 方法自动生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10575784/

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