gpt4 book ai didi

javascript - 是否可以动态调用一个不存在的方法然后创建它?

转载 作者:行者123 更新时间:2023-11-29 10:48:57 25 4
gpt4 key购买 nike

这个问题的上下文如下:我使用 jQuery 推荐的设计模式编写了一个 jQuery 插件,您将一个字符串作为插件的第一个参数传递给插件,以调用所需的(和预定义的)方法,即您的插件方法的一个对象。如:

$("selector").php('method_name');

然而,对于我的特定插件(仅通过简单的 AJAX 处理程序调用 PHP 函数),我想为其用户提供以这种方式调用给定后端 PHP 函数的能力:

$("selector").php.strlen(param); // As an example of calling the PHP strlen function

其中 .strlen 不是 .php 对象(或任何其他对象)的已定义方法。换句话说,有没有一种方法可以防止 JavaScript 抛出异常并捕获用户试图调用的所需方法的名称,而实际上该方法尚未定义且不存在?

出于显而易见的原因,我不想为每个 PHP 函数定义方法名称(或接口(interface))。这将产生大量代码开销,并且非常耗时。

最佳答案

ECMAScript Harmony 支持 Proxies让您拦截属性访问。不幸的是,它还没有得到广泛支持(Firefox 18 支持它)。

var php = new Proxy({}, {
get: function (target, name) {
return function () {
var args = Array.prototype.slice.call(arguments);
alert('Here you would call ' + name + '(' + args.join(', ') + ')');
};
}
});

php.strlen('hello');

有一种东西叫__noSuchMethod__ ,但同样,它似乎没有得到广泛支持。

关于javascript - 是否可以动态调用一个不存在的方法然后创建它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015309/

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