gpt4 book ai didi

Javascript:将私有(private)方法分配给私有(private)变量

转载 作者:行者123 更新时间:2023-11-28 13:25:13 25 4
gpt4 key购买 nike

所以我遇到了一些 JavaScript 问题。我不是专业人士,不明白为什么这不起作用。我想做的就是将私有(private)变量分配给私有(private)函数的返回值。如果我设置 var xxx=function name() ,当我引用 xxx 时,它会执行该函数。这是我的代码。注意 - var username=getsessionuser();下面。

//Namespace
var SESSIONCONTROLS=SESSIONCONTROLS || {};
SESSIONCONTROLS.APP=SESSIONCONTROLS.APP || {};


SESSIONCONTROLS.APP.User = (function () {
// defined within the local scope

//Private Variable
var username=getsessionuser();

//Privatemethod
var getsessionuser=function(){var mname='My Name'; return mname;}

//Private Property & Method Example
var privateMethod1 = function () { alert("private method 1"); }
var privateMethod2 = function () { alert("private method 2");}

var privateProperty1 = 'foobar';
return {
//Public Method & Nested Namespace examples
//Public Methods
publicMethod1: privateMethod1,
//nested namespace with public properties
properties:{
publicProperty1: privateProperty1,
sessionname:username
},
//another nested namespace
utils:{
publicMethod2: privateMethod2
}
}
})();

这就是它在另一个例程中的调用方式。

var name=SESSIONCONTROLS.APP.User.properties.sessionname;
alert(name);

为什么这不起作用?

最佳答案

您遇到了一个简单的排序问题:

var username=getsessionuser();

//Privatemethod
var getsessionuser=function(){var mname='My Name'; return mname;}

JavaScript 不会提示 undefined variable 引用,因为它将函数中的所有 var 语句视为它们出现在代码的最开头。但是,var 语句中的初始化按照它们出现的顺序执行。

因此,当您的代码尝试初始化 username 时,变量 getsessionuser 尚未定义。

如果您只是重新排序这两个语句,以便首先定义该函数,那么该部分至少可以工作。

或者,您可以使用函数声明语句来定义函数:

function getsessionuser() {
var mname = "My Name";
return mname;
}

即使您将 username 的初始化保留在函数之前,您的代码也将正常工作,因为函数声明也会隐式“提升”到函数的开头。

关于Javascript:将私有(private)方法分配给私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802038/

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