我需要BrowserView使用executeJavaScript. 此代码需要类。如何对类进行字符串化?我发现您可以使用+.const fn = function() { console.log('Hello');};const functionToText = '' + fn;console.log(functionToText);// function() {// console.log('Hello');// }*/但我的问题是,你怎么能对类进行字符串化?我需要从类创建的以下对象的字符串版本new来注入它。class Person { constructor({ name }) { this.getName = () => name; }}const person = new Person({ name: 'John'});const str = // somehow stringify person hereconsole.log(str);// the person objectview.webContents.executeJavaScript(`window.person = ${str}`);编辑:以下是我根据接受的答案最终实施它的方式:view.webContents.executeJavaScript( `window.person = new ${str}({ name: 'John' })`);
1 回答
白板的微信
TA贡献1883条经验 获得超3个赞
你在你的问题中有解决方案。适用于函数的相同方法也适用于类。
class Person {
constructor({ name }) {
this.getName = () => name;
}
}
const str = '' + Person;
console.log(str);
更新以响应相关的其他数据。 您无法序列化对象并使其跨越执行边界,因为此时它不再是数据,而是在内存中运行。
您可以采用的一种方法是调用调用中的所有代码 executeJavaScript
例如:
view.webContents.executeJavaScript(`
class Person {
constructor({ name }) {
this.getName = () => name;
}
}
window.person = new Person({name: 'John'});
`);
或者替代地
view.webContents.executeJavaScript(`
(function() {
class Person {
constructor({ name }) {
this.getName = () => name;
}
}
window.person = new Person({name: 'John'});
})();
`);
添加回答
举报
0/150
提交
取消