呼叫父母的外部功能"这个"范围

时间:2017-07-23 17:22:21

标签: scope ecmascript-6 this es6-class es6-modules

我有两个.js文件:root.js和external.js

root.js

import myExternalFunction from 'external.js'

class Parent {
    constructor(){}
    parentFunction = () => {
        console.log('I was called from an external function using "this."')
    }
}

external.js

export default myExternalFunction = () => {
    this.parentFunction()
}

目前我收到一条错误消息,指出它不是一个功能,或者没有访问过这个'。

如何导入想要使用' this'的外部功能?他们被召唤的范围?

1 个答案:

答案 0 :(得分:0)

  

如何导入想要使用调用它们的'this'范围的外部函数?

它与导出/导入函数的方式无关。

您需要考虑两件事:

  • 想要动态must not be arrow functions接收this值的功能,请使用

    export default function myExternalFunction() {
        this.parentFunction()
    }
    
  • as usual,必须以正确的方式调用该函数以获得预期的this值。在调用被调用函数的范围内传递当前this值没有神奇之处。你必须做像

    这样的事情
    import myExternalFunction from 'external.js'
    
    class Parent {
        constructor(){
            this.method = myExternalFunction;
            this.parentFunction = () => {
                console.log('I was called from an external function using "this."')
            }
        }
    }
    
    const example = new Parent;
    example.method() // an invocation as a method
    myExternalFunction.call(example); // explicit using `call`