Javascript单例模式
我不知道如何解释我面临的问题。我写了一个小片段。请检查以下内容:Javascript单例模式,javascript,javascript-objects,Javascript,Javascript Objects,我不知道如何解释我面临的问题。我写了一个小片段。请检查以下内容: var Package = {}; Object.defineProperty(Object.prototype, 'inherit', { value: function(Parent, args) { var temp = function(){}; temp.prototype = Parent.prototype;
var Package = {};
Object.defineProperty(Object.prototype, 'inherit',
{
value: function(Parent, args)
{
var temp = function(){};
temp.prototype = Parent.prototype;
this.prototype = new temp();
this.uber = Parent.prototype;
this.prototype.constructor = this;
},
enumerable: false
});
var Module1 = Package.Module1 = function() {
// code;
};
Module1.prototype.method1 = function() {
};
var Module2 = Package.Module2 = function() {
// code;
};
Module2.prototype.method2 = function() {
};
var Module3 = Package.Module3 = function() {
// code;
};
// using custom : object.prototype.inherit
// Module3 inherit Module1 and 2;
Module3.inherit(Module1);
Module3.inherit(Module2);
Module3.prototype.method3 = function() {
};
//creating object
var mod = new Package.Module3();
mod.method1();
mod.method2();
mod.method3();
创建mod对象时,我可以访问method1、2和3。但实际上我想在不创建对象的情况下调用方法,比如Package.Module3.method1;怎么可能呢?对象文字符号
var Package = {
ModuleA : {
methodA : function(){},
methodB : function(){}
},
ModuleB : {
methodC : function(){},
methodD : function(){}
}
}
Package.ModuleA.methodA();
对象文字符号
var Package = {
ModuleA : {
methodA : function(){},
methodB : function(){}
},
ModuleB : {
methodC : function(){},
methodD : function(){}
}
}
Package.ModuleA.methodA();
试着这样做:
var Module3 = Package.Module3 = (function() {
var Module3 = function(){
// using custom : object.prototype.inherit
// Module3 inherit Module1 and 2;
};
Module3.inherit(Module1);
Module3.inherit(Module2);
Module3.prototype.method3 = function() {
};
return new Module3();
})();
在本例中,您只有Module3类的一个实例
用法:
试着这样做:
var Module3 = Package.Module3 = (function() {
var Module3 = function(){
// using custom : object.prototype.inherit
// Module3 inherit Module1 and 2;
};
Module3.inherit(Module1);
Module3.inherit(Module2);
Module3.prototype.method3 = function() {
};
return new Module3();
})();
在本例中,您只有Module3类的一个实例
用法:
Package.Module3是否必须是构造函数?您可以将其创建为一个对象并为其分配函数。或者将Module3的实例分配给Package.Module3。这完全取决于你还想用它做什么。现在我有了。但这是可以避免的,单例可以是javascript中的对象文本。使用new的变量实例并不多。此处的更多信息:如果我们使用……,则无法使用prototype添加方法:var方法=新函数{};Package.Module3是否必须是构造函数?您可以将其创建为一个对象并为其分配函数。或者将Module3的实例分配给Package.Module3。这完全取决于你还想用它做什么。现在我有了。但这是可以避免的,单例可以是javascript中的对象文本。使用new的变量实例并不多。此处的更多信息:如果我们使用……,则无法使用prototype添加方法:var方法=新函数{};但是我的继承方法不起作用。代码段iam使用函数inheritC,P{var F=function{};F.prototype=P.prototype;C.prototype=new F;C.uber=P.prototype;C.prototype.constructor=C;}@JaisonJustus然后创建一个外部继承函数:方法:ns.inheritFromsomeclass,someclass2…但我的inherit方法不起作用。代码段iam使用函数inheritC,P{var F=function{};F.prototype=P.prototype;C.prototype=new F;C.uber=P.prototype;C.prototype.constructor=C;}@JaisonJustus然后创建一个外部继承函数:方法:ns.inheritFromsomeclass,someclass2。。。