从扩展电子 class 调用 class 方法时出错
Error calling class method from extended Electron class
首先,我是 javascript 和 Electron 的新手。
这是复制 YouTube 基本 Javascrip/Electron 教程中的概念的代码片段,出于某种原因,它对我不起作用。
- 定义一个基础class“基础”
- 定义一个名为“derived”的 class 扩展“base”
- 在派生构造函数中,调用super(),然后调用派生的class方法this.showSomething()
一切正常。现在,通过扩展 Tray (Electron class) 定义派生的 class 并做同样的事情:
- 定义一个名为“derivedFromTray”的 class 扩展“Tray”
- 在派生构造函数中,调用super()然后调用派生的class方法this.showSomething()
这会导致错误:this.ShowSomething is not a function
我是否遗漏了脚本中的某些内容?为什么会这样?
注 1:我对调用扩展 class 方法的替代编码解决方案不感兴趣 ,除非有明确的指示,通过设计,派生Electron classes 打破了这段代码中使用的编码解决方案。
您可以在这里找到教程:How To Code - Electron JS Tutorial #46
节点版本:15.8.0 - 电子版本:11.2.3
复制问题的代码:
const electron = require('electron')
const path = require('path');
const {app, Tray} = electron;
class base{
constructor(path){
this.internalPath = path
}
}
class derived extends base {
constructor(path) {
super(path)
this.showSomething();
}
showSomething()
{
console.log(`internal Path: ${this.internalPath}`);
}
}
class derivedFromTray extends Tray {
constructor(iconPath) {
super(iconPath)
this.showSomething() // ERROR: this.showSomething is not a function
}
showSomething()
{
console.log('Log from derivedFromTray.showSomething');
}
}
app.on('ready', ()=>{
// WARNING: specify a valid image path or the example
// will not work!
const paramPath = path.join(__dirname, "app_tray_icon.png")
const workingDerived = new derived(paramPath)
const notWorkingDerived = new derivedFromTray(paramPath)
})
unless there is a clear indication that, by design, deriving Electron classes breaks the coding solution used in this snippet.
https://github.com/electron/electron/issues/25721
we do not support extending built in classes in Electron
Electron 中内置的 classes 不是普通的 javscript 对象,也不支持所有 js 行为,例如扩展 class.
首先,我是 javascript 和 Electron 的新手。 这是复制 YouTube 基本 Javascrip/Electron 教程中的概念的代码片段,出于某种原因,它对我不起作用。
- 定义一个基础class“基础”
- 定义一个名为“derived”的 class 扩展“base”
- 在派生构造函数中,调用super(),然后调用派生的class方法this.showSomething()
一切正常。现在,通过扩展 Tray (Electron class) 定义派生的 class 并做同样的事情:
- 定义一个名为“derivedFromTray”的 class 扩展“Tray”
- 在派生构造函数中,调用super()然后调用派生的class方法this.showSomething() 这会导致错误:this.ShowSomething is not a function
我是否遗漏了脚本中的某些内容?为什么会这样?
注 1:我对调用扩展 class 方法的替代编码解决方案不感兴趣 ,除非有明确的指示,通过设计,派生Electron classes 打破了这段代码中使用的编码解决方案。
您可以在这里找到教程:How To Code - Electron JS Tutorial #46
节点版本:15.8.0 - 电子版本:11.2.3
复制问题的代码:
const electron = require('electron')
const path = require('path');
const {app, Tray} = electron;
class base{
constructor(path){
this.internalPath = path
}
}
class derived extends base {
constructor(path) {
super(path)
this.showSomething();
}
showSomething()
{
console.log(`internal Path: ${this.internalPath}`);
}
}
class derivedFromTray extends Tray {
constructor(iconPath) {
super(iconPath)
this.showSomething() // ERROR: this.showSomething is not a function
}
showSomething()
{
console.log('Log from derivedFromTray.showSomething');
}
}
app.on('ready', ()=>{
// WARNING: specify a valid image path or the example
// will not work!
const paramPath = path.join(__dirname, "app_tray_icon.png")
const workingDerived = new derived(paramPath)
const notWorkingDerived = new derivedFromTray(paramPath)
})
unless there is a clear indication that, by design, deriving Electron classes breaks the coding solution used in this snippet.
https://github.com/electron/electron/issues/25721
we do not support extending built in classes in Electron
Electron 中内置的 classes 不是普通的 javscript 对象,也不支持所有 js 行为,例如扩展 class.