gpt4 book ai didi

JavaScript。从立即调用函数获取外部对象的引用

转载 作者:行者123 更新时间:2023-12-02 17:01:59 25 4
gpt4 key购买 nike

我想优化项目但遇到问题。我不知道如何解决这个问题。我想使用立即调用函数来初始化 IS_LOCALHOST 属性和 CONTEXT_PATH,但我无法访问 isLocalhost() 函数和常量属性(如端口号)。我尝试输入 this作为参数立即调用函数,但它也引用了文档,我尝试保存引用,如 self: this并使用this.self像周长甚至 util 。我不明白如何解决这个问题。请帮助我理解工作解决方案。

var util = {

WAR_FILE_NAME : 'app-name/',
DEFAULT_TOMCAT_PORT : 8080,
DEFAULT_SECURE_TOMCAT_PORT : 8443,

/*** Pre construct block ***/
IS_LOCALHOST : ( function () {
var isLocalhost = false, hostWithPort = location.host;
if ( hostWithPort.indexOf('localhost') !== -1 || hostWithPort.indexOf('127.0.0.1') !== -1 ) {
isLocalhost = true;
}
return isLocalhost;
}() ),

isLocalhost : function (){
return this.IS_LOCALHOST;
},

CONTEXT_PATH : ( function (utilModule) {
return location.hostname + ( location.port ? ':' + utilModule.DEFAULT_TOMCAT_PORT : '' ) + '/' + ( utilModule.isLocalhost() ? utilModule.WAR_FILE_NAME : '' );
}(util) ),

SECURE_CONTEXT_PATH : ( function (utilModule) {
return location.hostname + ( location.port ? ':' + utilModule.DEFAULT_SECURE_TOMCAT_PORT : '' ) + '/' + ( utilModule.isLocalhost() ? utilModule.WAR_FILE_NAME : '' );
}(util) )
}

最佳答案

我不知道为什么你需要将它们设置为 IIFEs .

为什么不让它们像下面第一个示例一样正常运行,或者像第二个示例一样在适当的时候简单地设置属性?

示例 1——普通函数

var util = {

WAR_FILE_NAME: 'app-name/',
DEFAULT_TOMCAT_PORT: 8080,
DEFAULT_SECURE_TOMCAT_PORT: 8443,

/*** Pre construct block ***/
IS_LOCALHOST: (function() {
var isLocalhost = false,
hostWithPort = location.host;
if (hostWithPort.indexOf('localhost') !== -1 || hostWithPort.indexOf('127.0.0.1') !== -1) {
isLocalhost = true;
}
return isLocalhost;
}()),

isLocalhost: function() {
return util.IS_LOCALHOST;
},

CONTEXT_PATH: function() {
return location.hostname + (location.port ? ':' + util.DEFAULT_TOMCAT_PORT : '') + '/' + (util.isLocalhost() ? util.WAR_FILE_NAME : '');
},

SECURE_CONTEXT_PATH: function() {
return location.hostname + (location.port ? ':' + util.DEFAULT_SECURE_TOMCAT_PORT : '') + '/' + (util.isLocalhost() ? util.WAR_FILE_NAME : '');
}
};

示例 2 -- 随后使用 IIFE 设置属性

var util = {

WAR_FILE_NAME: 'app-name/',
DEFAULT_TOMCAT_PORT: 8080,
DEFAULT_SECURE_TOMCAT_PORT: 8443,

/*** Pre construct block ***/
IS_LOCALHOST: (function() {
var isLocalhost = false,
hostWithPort = location.host;
if (hostWithPort.indexOf('localhost') !== -1 || hostWithPort.indexOf('127.0.0.1') !== -1) {
isLocalhost = true;
}
return isLocalhost;
}()),

isLocalhost: function() {
return util.IS_LOCALHOST;
}
};

util.CONTEXT_PATH = (function() {
return location.hostname + (location.port ? ':' + util.DEFAULT_TOMCAT_PORT : '') + '/' + (util.isLocalhost() ? util.WAR_FILE_NAME : '');
})();

util.SECURE_CONTEXT_PATH = (function() {
return location.hostname + (location.port ? ':' + util.DEFAULT_SECURE_TOMCAT_PORT : '') + '/' + (util.isLocalhost() ? util.WAR_FILE_NAME : '');
})();

关于JavaScript。从立即调用函数获取外部对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25608961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com