- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
某些字符串通过 new Function(...)
调用转换为函数。
如何在不使用 arguments.callee
的情况下在字符串内引用此函数?
var f = new Function('return arguments.callee.smth');
f.smth = 128;
f(); // 128
最佳答案
做到这一点的唯一方法是使用闭包。
例如:
var f = (function () {
var f = new Function('return this().smth').bind(function () { return f });
return f;
})();
f.smth = 128;
f();
或者这样:
var f = (function (g) {
return function f() {
return g.apply(f, arguments)
};
})(new Function('return this.smth'));
f.smth = 128;
f();
无论如何,无论严格模式如何,似乎arguments.callee
都可以在构造函数内工作。
有关该主题的其他链接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/callee
A use of arguments.callee with no good alternative
However, in a case like the following, there are not alternatives to
arguments.callee
, so its deprecation could be a bug (see bug 725398)
关于javascript - 替换新函数内的arguments.callee,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870956/
我正在尝试获取当前正在运行的函数的名称。根据我的阅读,这应该可以使用: (arguments.callee.toString()).match(/function\s+(\[^\s\(]+)/) 但是
某些字符串通过 new Function(...) 调用转换为函数。 如何在不使用 arguments.callee 的情况下在字符串内引用此函数? var f = new Function('ret
我试图在下面的简单函数中访问 arguments.callee 属性,但我无法访问,因为该函数会抛出错误。 function foo(a = 50, b) { console.log(argume
我们正在将大量应用程序从 Windows XP 迁移到 Windows 7,但遇到了 Word Automation 的老问题。 我们的一个应用程序遇到了一个问题,当尝试连接到 Word 时,除非它已
我还没有找到这个变量的任何完整的跨浏览器文档。 什么是arguments.callee为了?它是如何工作的? 它有哪些参数? 最佳答案 arguments.callee 是对当前正在调用的函数的引用。
我有一个包含两个子项目的项目。 parent | + - - my-api | | | ` - config.properties | ` - - my-project
我正在分析我正在阅读的一本书中的一些代码,有一小段让我有点困惑: //... some code setTimeout(function(){ //...some code if(some
需要一个脚本来快速告诉我页面上有多少 html 评论以及它们的内容。使用匿名函数进行递归 DOM 遍历似乎是合适的: var comments = []; //set up an array wher
function runProcess(){ var todo = items.concat(); setTimeout(function(){ process(t
关于 arguments.callee 有很多谬误,我试图了解是否存在确实无法用可行的 ES5 严格模式替换的用例 备选方案。 在MDN arguments.callee他们指向的文档 a use o
我一直在研究 arguments.callee 并偶然发现了这个问题。 我的想法是匿名函数会在启动时运行,然后在几秒钟后再次运行。 setTimeout(async function() { co
我想改进我的调试函数以包含有关调用 debug() 的函数的信息。 我使用 arguments.callee.caller.name (debug.caller.name 更准确)来获取正在调用 de
我正在尝试根据我的需要调整 jquery 脚本,并遇到了以下几行 - arguments.callee.eabad1be5eed94cb0232f71c2e5ce5 = function() {
假设我想获取某种堆栈跟踪,获取当前函数之前调用的所有函数的名称。 我做了这样的事情: var callee; var caller; var _args
由于 arguments.callee 将被弃用,我将在以下表达式中使用什么代替 arguments.callee`: var self = this; this.async(function(){
我有一个 EventListener 可以监听整个文档并记录击键,但我想在满足某些条件时删除此监听器。 以下是我的代码片段: document.addEventListener('keyup', fu
我是第一次在严格模式下工作,你知道吗,这也是多年来第一次能够使用非严格模式的属性。我的question here概述了我遇到的确切问题,但如果我仍然可以访问 arguments.callee,我已经制
我遇到了 Virtualbox 问题 Callee RC: REGDB_E_CLASSNOTREG” (0x80040154) 突然间。问题始于 VirtualBox 4.3(我认为)。我升级到版本
当特定函数被调用两次时,我想看到 Angular 堆栈跟踪,这看起来很奇怪,但却是预期的行为 https://github.com/angular/angular.js/issues/1146 。 u
如果我们在tsconfig.json中"strict": false,那么我们就可以访问arguments.callee.name。 我们是否可以打开其他一些设置,同时保持 "strict": tru
我是一名优秀的程序员,十分优秀!