相关疑难解决方法(0)

为什么在JavaScript中不推荐使用arguments.callee.caller属性?

为什么arguments.callee.caller在JavaScript中弃用了该属性?

它已添加,然后在JavaScript中弃用,但ECMAScript完全省略了它.某些浏览器(Mozilla,IE)一直支持它,并且在地图上没有任何计划来删除支持.其他人(Safari,Opera)已经采用了它的支持,但对旧浏览器的支持是不可靠的.

是否有充分理由将这些有价值的功能置于不确定状态?

(或者,有没有更好的方法来获取调用函数的句柄?)

javascript ecma262

212
推荐指数
3
解决办法
7万
查看次数

arguments.callee替代

正如arguments.callee将要弃用的那样,我将在下面的表达式中使用而不是arguments.callee`:

var self = this;

this.async(function(){
  if(test()){
    then();
  }else{
    self.async(arguments.callee);
  }
});
Run Code Online (Sandbox Code Playgroud)

javascript

8
推荐指数
1
解决办法
1591
查看次数

arguments.callee的替代方案

我有一个EventListener,它监听整个文档并记录击键,但是我想在满足某些条件时删除这个监听器.

以下是我的代码片段:

document.addEventListener('keyup', function(e) {
    var letter_entered = String.fromCharCode(e.keyCode).toLowerCase();
    player.makeGuess(letter_entered);

    if(player.win_status === true || player.lose_status === true) {
        document.removeEventListener('keyup', arguments.callee, false);
    }
});
Run Code Online (Sandbox Code Playgroud)

这是有效的,但根据Mozilla Developer Docs,此方法已被弃用.

我知道我可以简单地命名这个函数,但有没有替代方法可以让我继续使用未命名的函数

javascript reflection porting arguments deprecated

8
推荐指数
2
解决办法
7554
查看次数

JQuery递归函数?

如何从函数内部调用函数,使其变为递归?这是我的代码,我添加了一个注释,我想开始递归:

$('a.previous-photos, a.next-photos').click(function() {
    var id = $('#media-photo img').attr('id');
    var href = $(this).attr('href');
    href = href.split('/');
    var p = href[href.length - 1];
    var url = '/view/album-photos/id/' + id + '/p/' + p;

    $.get(url, function(data) {
        $('.box-content2').replaceWith('<div class="box-content2"' + data + '</div>');
    });

    // here I want to call the function again

    return false;
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery

7
推荐指数
2
解决办法
3万
查看次数

JavaScript:获取自身内部的函数名称

是的,我知道有很多关于这个问题的线程,对于初学者:

从函数本身获取函数名称[重复]

从内部获取函数名称

不推荐使用Arguments.callee - 应该使用什么?

但是给出答案的问题是arguments.callee已被弃用.所有答案都说只是给你的功能一个名字.但是,据我所知,这并不能解决我的问题.说我有以下功能:

function blah() {
  // arguments.callee.name is deprecated
  console.log('The function name is: ' + arguments.callee.name + '.');
}
Run Code Online (Sandbox Code Playgroud)

但是因为它被弃用了,我不应该使用它,所以我应该使用什么呢?有什么办法可以在函数本身内部访问函数名,或者我只是出于概率吗?

如果它使事情变得更容易,我使用的是Ext JS框架,但我还没有找到一种了解函数名称的方法.如果没有,是否有jQuery方法?我在这里绝望.

javascript jquery arguments extjs

5
推荐指数
1
解决办法
1461
查看次数