-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsingleton.js
80 lines (65 loc) · 1.42 KB
/
singleton.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
var mySingleton = {
property1: "something",
property2: "something else",
method1: function () {
console.log("hello world");
}
}
var mySingleton = function () {
var privateVariable = "something private";
function showPrivate() {
console.log(privateVariable)
}
return {
publicMethod: function () {
showPrivate();
},
publicVar: "the public can see this"
}
}
var single = mySingleton();
single.publicMethod();
console.log(single.publicVar);
var Singleton = (function () {
var instantiated;
function init() {
return {
publicMethod: function () {
console.log("hello world!")
},
publicProperty: "test"
}
}
return {
getInstance: function () {
if (!instantiated) {
instantiated = init();
}
return instantiated;
}
}
})();
Singleton.getInstance().publicMethod();
var SingletonTester = (function () {
function Singleton(options) {
options = options || {};
this.name = 'SingletonTester';
this.pointX = options.pointX || 6;
this.pointY = options.pointY || 10;
}
var instance;
var _static = {
name: 'SingletonTester',
getInstance: function (options) {
if (instance === undefined) {
instance = new Singleton(options);
}
return instance;
}
}
return _static;
})();
var singletonTest = SingletonTester.getInstance({
pointX: 5
})
console.log(singletonTest.pointX)