我有这个单身人士.公共函数允许设置私有变量,但是我无法以在私有方法中使用它们的方式来设置它们:
var ServiceInterface = (function () {
// Instance stores a reference to the Singleton
var instance;
function init() {
// Singleton
// Private methods and variables
var m_action;
function performAction() {
alert(m_action);
}
return {
// Public methods and variables
callBackend: function (sAction) {
m_action = sAction;
}
};
};
})
m_action在整个单例的公共和私有部分中不可用.我究竟做错了什么?
解决方法:
我想你指的是这个
var ServiceInterface = (function () {
var m_action;
function performAction() {
alert(m_action);
}
return {
// Public methods and variables
callBackend: function (sAction) {
m_action = sAction;
performAction();
}
};
})()
ServiceInterface.callBackend("Hello world");
您需要执行匿名功能.运行它可以创建用匿名函数定义的变量和函数,而这些变量和函数在外部看不到.大多数js库都使用此约定来创建模块并避免感染全局范围
var ServiceInterface = (function () {
// code inside
})()
这些是限制在匿名函数执行范围内的变量和函数
// var ServiceInterface = (function () {
var m_action;
function performAction() {
alert(m_action);
}
// })()
最后,返回一个javascript对象,该对象将公开可在匿名函数范围之外访问的函数
//var ServiceInterface = (function () {
// var m_action;
//
// function performAction() {
// alert(m_action);
// }
return {
// Public methods and variables
callBackend: function (sAction) {
m_action = sAction;
performAction();
}
};
//})()
但是,为什么要为单例创建私有变量和方法呢?