gpt4 book ai didi

javascript如何从父类(super class)中获取子类 '__dirname'

转载 作者:搜寻专家 更新时间:2023-10-31 22:51:43 24 4
gpt4 key购买 nike

我想在父类中创建一个方法,该方法将返回扩展它的每个子类的位置。

// Class A dir is '/classes/a/
class A{
getPath(){
console.log(__dirname);
return (__dirname);
}
}

// Class B dir is '/classes/b'
class B extends A{

}

new A().getPath(); // Prints '/classes/a'
new B().getPath(); // Prints '/classes/a' (I want here '/classes/b');

我理解为什么 B 类打印 A 的位置,但我正在寻找一种选项,即在父类上创建一个方法来打印子类的位置。我不想重写每个子类中的方法,因为它缺少重点

我也尝试了 process.pwd()

最佳答案

如果您喜欢稍微复杂一点的方法(将来可能需要更新),您可以很容易地检索子类的路径。你的类扩展了另一个类(或一个不扩展任何内容的类):

module.exports = class B extends A
{
// TODO: implement
}

为了检索该类的路径,我们可以执行以下操作:

/* For this method we need to have the constructor function itself. Let us pretend that this
* was required by a user using our framework and we have no way of knowing what it actually
* is from the framework itself.
*/
let B = require('path-to-b')
let path = require('path')
let dirOfB

for (let [, val] of require('module')._cache)
if (val.exports === B)
dirOfB = path.dirname(val.filename)

console.log(dirOfB)

// Expected output: path-to-b

如果我们有构造函数,这种方法虽然有点 hacky,但效果很好,但不确定它实际位于哪个目录。

关于javascript如何从父类(super class)中获取子类 '__dirname',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41712818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com