【问题标题】:How to get context of calling function/object?如何获取调用函数/对象的上下文?
【发布时间】:2013-06-30 17:35:57
【问题描述】:
function define(prop, value) {
    Object.defineProperty( /* context of caller */ , prop, {value: value});
}

function F() {
    define('x', 42);
}

var f = new F();

有没有办法获取调用函数的上下文(上面代码中的内联注释)?

如果我绑定到这个(将注释替换为this)并在F构造函数中声明var def = define.bind(this);,它工作正常

【问题讨论】:

  • stackoverflow.com/questions/9679053/…,看来你必须通过this来定义
  • 是的,请问有没有办法不通过this
  • define.call(this, 'x', 42);?然后Object.defineProperty(this, ...)
  • ...或者只是把你的define函数放在F.prototype上,比如F.prototype.define = define,这样你就可以在构造函数中做this.define(...),而define中的this会自动你的对象。
  • @CrazyTrain,将define 放入F.prototypethis.define(...) 看起来比绑定好,但这并不常见。

标签: javascript this function-constructor


【解决方案1】:

如何获取调用函数/对象的上下文?

您不能,您必须明确地将其提供给您的 define 函数(将其作为参数传递等)。

这是一件好事(tm)。 :-) 您最不想要的是可以访问调用者上下文并以不受控制的方式更改事物的函数。

【讨论】:

    猜你喜欢
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2019-11-09
    • 2020-04-19
    • 1970-01-01
    相关资源
    最近更新 更多