为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript:如何在调用 new 后对类进行字符串化

JavaScript:如何在调用 new 后对类进行字符串化

四季花海 2021-10-21 15:50:31
我需要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'});

})();

`);


查看完整回答
反对 回复 2021-10-21
  • 1 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信