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

我需要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 here

console.log(str);

// the person object

view.webContents.executeJavaScript(`window.person = ${str}`);

编辑:


以下是我根据接受的答案最终实施它的方式:


view.webContents.executeJavaScript(

  `window.person = new ${str}({ name: 'John' })`

);


四季花海
浏览 187回答 1
1回答

白板的微信

你在你的问题中有解决方案。适用于函数的相同方法也适用于类。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'});})();`);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript