如何检测函数是否已位于具有相同名称的函数中
How to detect that a function is already inside a function having that same name
我想做这样的事情;问题是(typeof myfunc == 'function')总是正确的,因为它是相同的函数名称。是否可以以某种方式将该自名函数排除在类型范围之外?
function myfunc() {
alert('old');
}
function myfunc() {
if (typeof myfunc == 'function') {
// alert('old');
alert('new');
} else {
alert('myfunc does not exist');
}
}
你试图做的事情是不可能的。在覆盖函数之前,您需要先捕获该函数。
var _orgFnc = window.myfunc; //assuming it is global
function myfunc() {
if (_orgFnc) {
// alert('old');
alert('new');
} else {
alert('myfunc does not exist');
}
}
如果它不是全局的,你基本上需要做
var _orgFnc = (typeof myfunc === "function") ? myfunc : null;
考虑一下
function myfunc() { } // first definition
function myfunc() { } // second definition
本质上与
var myfunc;
myfunc = (function() { }); // first definition
myfunc = (function() { }); // second definition
您可以在此处看到名称myfunc
存在并引用函数对象。 第一个定义不再存在,因为第二个定义已经取代了它。
我认为,最接近的方法是在(重新)定义函数之前使用函数表达式并测试是否存在。
var myfunc;
myfunc = (function() { });
if (typeof myfunc === 'function') {
alert("Function exists");
} else {
alert("Did not exist, create (new) definition now");
myfunc = (function() { });
}
相关文章:
- 如何使jQuery中的悬停函数单独应用于数据库映像
- 如何将jquery函数仅应用于大屏幕
- Jquery事件处理程序仅适用于匿名函数
- jQuery调整大小函数只适用于窗口
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 敲除js变量设置类似于调用函数
- 为什么针对工厂的Angular数据绑定只适用于函数
- 如何在JavaScript中创建类似于something.function()的函数
- 立即调用函数表达式(IIFE)相对于普通函数的优势
- 将jquery函数动态应用于添加的元素
- .click 函数仅适用于断点
- “add”函数适用于不同的链接/参数组合
- 等效于不带jQuery的getJSON函数
- 如何将此函数应用于以下JsonML中的每个匹配元素
- 将函数应用于页面上的所有链接
- Jquery函数只适用于第二次单击
- 我想放一个JS函数,它适用于列表的所有元素,但我可以't将其复制到每个元素中
- 如何获取从jQuery click()函数调用的特定于标记的自定义Javascript函数
- 将函数应用于填充有数字的对象
- 使用map函数对具有数字数组的字符串进行解码