相关疑难解决方法(0)

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

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

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

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

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

javascript ecma262

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

如何在带有chrome或firefox的javascript中将console.trace()的结果作为字符串获取?

console.trace()在控制台上输出结果.
我想将结果作为字符串并将它们保存到文件中.

我没有为函数定义名称,我也无法得到它们的名字callee.caller.name.

javascript console firefox google-chrome stack-trace

88
推荐指数
7
解决办法
6万
查看次数

如何在onclick方法中防止默认事件处理?

如何防止onclick方法中的默认值?我有一个方法,我也传递自定义值

<a href="#" onclick="callmymethod(24)">Call</a>
Run Code Online (Sandbox Code Playgroud)
function callmymethod(myVal){
    //doing custom things with myVal
    //here I want to prevent default
}
Run Code Online (Sandbox Code Playgroud)

javascript

78
推荐指数
9
解决办法
14万
查看次数

是否有可能在javascript中获取调用者上下文?

var test = {
    demo: function(){
      //get the caller context here
    }
}
//when this gets called, the caller context should be window.
test.demo();
Run Code Online (Sandbox Code Playgroud)

我试过arguments.calleearguments.callee.caller,并没有运气...

javascript

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

如何从严格模式获得呼叫者?

可以混合严格和非严格的代码.但即使对它的调用不是严格的代码,你也不能使用调用者.有人知道任何解决方法吗?

我试过这个:

(function strict(){
    "use strict";
    nonStrict();//ok
    nonStrictCaller();//error :(
})();

function nonStrict(){
    return 011;//Octal literals are not allowed in strict mode
}

function nonStrictCaller(){
    return nonStrictCaller.caller;
}
Run Code Online (Sandbox Code Playgroud)

javascript strict-mode

22
推荐指数
1
解决办法
1万
查看次数

'caller'和'arguments'是受限制的函数属性,在此上下文中无法访问

我正在尝试创建一个简单的调试函数,只显示函数的调用者,如下所示:

function xe() {
  console.log(xe.caller().name)
}
Run Code Online (Sandbox Code Playgroud)

有了这个,我只能添加xe()一个函数,它将记录对函数的调用 - 只是一个简单的简单添加,以帮助调试.调试糖,可以这么说.

不幸的是我从主题行得到错误:

TypeError:'caller'和'arguments'是受限制的函数属性,在此上下文中无法访问.

我正在使用Babel/ES6,它注入"use strict"每个模块的顶部.这可能是原因,但搜索已经产生了有关错误引发原因的有限信息,我想更好地理解它.

如果严格模式是问题,我宁愿不为整个项目禁用严格模式 - 仅用于模块/功能.

javascript strict ecmascript-6

20
推荐指数
1
解决办法
3万
查看次数

JavaScript - 获取调用对象

可能重复:
Javascript如何找到调用函数?

嗨,大家好!

有没有办法this从调用当前函数的函数中获取值?看这个:

function TraceMySelf(){
    console.log(this);
}
function A(){
    TraceMySelf();
    console.log(this);
}

var a = new A();
Run Code Online (Sandbox Code Playgroud)

执行此代码时,控制台首先显示window对象,然后显示a对象.如何让代码显示a对象两次,只更改第2行?我知道,我可以申请内的功能Athis,但那不是我想要的.

这可能吗?

谢谢你的帮助!

javascript

18
推荐指数
1
解决办法
3万
查看次数

有没有办法在被调用者中获取调用者函数的名称?

可能重复:
Javascript如何找到调用函数?

今天早上我正在尝试使用javascript/jQuery,并试图捕获当前正在执行的函数的调用者名称.

因此,在下面的示例中,日志将显示runMe为调用者和showMe被调用者.

jQuery(document).ready(function($) {

  function showMe() {
    // should log the runMe as the caller and showMe as callee
    console.log('Callee: ',arguments.callee)
    console.log('Caller: ',arguments.caller);
  }

  function runMe() {
    // getting executed as a button is pressed.
    showMe();
  }

  $('a').bind('click', function(e) {
    e.preventDefault();
    runMe();
  });

});
Run Code Online (Sandbox Code Playgroud)

以上显然不起作用,因此我向大家提问.

在上面的例子中是否有一个很好的方法来获得调用者?

请注意:我知道我可以得到被调用者runMe并将其showMe作为参数传递但是这个问题的目标是一个不需要调用者"手动"传递给函数的解决方案.

有没有理由反对做这样的事情?

javascript jquery

15
推荐指数
1
解决办法
3万
查看次数

arguments.callee在es6中用于确定调用函数的替代方法

在框架中,我正在开发,我已经构建了机制,允许定义私有和受保护的属性和方法.
我在ES5规范中发现的唯一能力是使用arguments.callee,
如下所示:

descriptor.method = function () {
    if (__callerIsProptected(arguments.callee.caller.caller, cls))
        return value.apply(this, __defaults(_.values(arguments), defaults));
    throw 'Attempt to call ' + access + ' method "' + cls._name + '::' + name + '"';
};
Run Code Online (Sandbox Code Playgroud)

至于在严格模式下调用arguments.callee和arguments.caller引起异常抛出是否有任何方便的替代方法呢?

更新 - 添加整个被调用的功能代码

    function __descriptor(cls, type, name, descriptor, access) {
    //protected private non-function descriptor.value is replaced by get/set pair
    if (access !== 'public' && type == 'property') {
        delete descriptor.value;
        delete descriptor.writable;
        _.isFunction(descriptor.get) || (descriptor.get = function () {
            return this.__get(name);
        });
        _.isFunction(descriptor.set) …
Run Code Online (Sandbox Code Playgroud)

javascript arguments ecmascript-6

13
推荐指数
1
解决办法
3464
查看次数

Javascript找到调用函数

我在JS中有一个函数,它从多个地方调用.

现在我在iPad上测试这个页面,因此发现调试有点困难.

我可以通过某种方式(在控制台上打印)从我的函数调用的位置找到吗?

javascript firebug dom-events

11
推荐指数
2
解决办法
1万
查看次数