首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外部中的闭包编译器重命名函数

外部中的闭包编译器重命名函数
EN

Stack Overflow用户
提问于 2017-05-31 14:48:17
回答 1查看 79关注 0票数 0

我正在尝试为Electron创建一个extern,供Google Closure编译器使用。这是我的externs的样子:

代码语言:javascript
复制
var electron = {};
electron.dialog = function() {};
electron.app = function() {};
electron.ipcRenderer = function() {};
electron.on = function() {};
electron.send = function() {};
electron.remote = function(){}; // {return{getGlobal: function(){}}};
electron.remote.getGlobal = function(a){};
electron.require = function() {};
electron.buildFromTemplate = function() {};
electron.popup = function() {};
electron.getCurrentWindow = function() {};
electron.showErrorBox = function() {};
electron.setTitle = function() {};
electron.setRepresentedFilename = function() {};
electron.showMessageBox = function() {};
electron.getPath = function() {};
electron.showSaveDialog = function() {};
electron.showOpenDialog = function() {};

var process = {
    platform: {}
};

我遇到的问题是编译器没有保留getGlobal函数的函数名。我的原始源代码是这样的:

代码语言:javascript
复制
const electron = require('electron');
electron.remote.getGlobal('sharedObject')

在运行编译器之后,它最终看起来像这样:

代码语言:javascript
复制
var a = require("electron");
console.log(a.remote.D("sharedObject"));

a.remote.D真的应该是a.remote.getGlobal

如何让编译器保留getGlobal函数名?

EN

回答 1

Stack Overflow用户

发布于 2017-05-31 15:26:23

我更改了我的原始源代码,现在看起来像这样:

电子。远程“‘getGlobal”

编译器将保留该名称。这是因为编译器始终保持字符串的完整性。编译代码现在看起来如下所示:

代码语言:javascript
复制
console.log(a.remote.getGlobal("sharedObject"));

但是,编译器为什么不能识别外部文件中的getGlobal函数仍然是一个谜。也许它只能处理嵌套在根对象上的一个级别的函数(而这里是两个级别)。另一个原因可能与编译器如何执行其多阶段编译有关,这在处理嵌套函数时存在一定的缺陷。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44277561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档