Skip to content

Instantly share code, notes, and snippets.

@romamaslennikov
Last active July 17, 2016 06:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save romamaslennikov/03d768082034657ac6dec3e8190513dc to your computer and use it in GitHub Desktop.
Save romamaslennikov/03d768082034657ac6dec3e8190513dc to your computer and use it in GitHub Desktop.
//модуль
var basketModule = (function() {
var basket = []; // приватная переменная
return { // методы доступные извне
addItem: function(values) {
basket.push(values);
},
getItemCount: function() {
return basket.length;
},
getTotal: function() {
var q = this.getItemCount(),p=0;
while(q--){
p+= basket[q].price;
}
return p;
}
}
}());
//фассад
var module = (function() {
var _private = {
i: 5,
get: function() {
console.log('Текущее значение:' + this.i);
},
set: function(val) {
this.i = val;
},
run: function() {
console.log('процесс запущен');
},
jump: function() {
console.log('резкое изменение');
}
};
return {
facade: function(args) {
_private.set(args.val);
_private.get();
if (args.run) {
_private.run();
}
}
}
}());
//медиатор
var mediator = (function() {
var subscribe = function(channel, fn) {
if (!mediator.channels[channel]) mediator.channels[channel] = [];
mediator.channels[channel].push({ context: this, callback: fn });
return this;
},
publish = function(channel) {
if (!mediator.channels[channel]) return false;
var args = Array.prototype.slice.call(arguments, 1);
for (var i = 0, l = mediator.channels[channel].length; i < l; i++) {
var subscription = mediator.channels[channel][i];
subscription.callback.apply(subscription.context, args);
}
return this;
};
return {
channels: {},
publish: publish,
subscribe: subscribe,
installTo: function(obj) {
obj.subscribe = subscribe;
obj.publish = publish;
}
};
}());
//apiMessenger
var apiMessenger = (function() {
var switcher = true;
var arr = [];
return {
mess: function(mess) {
if(switcher){
if(arr[arr.length-1] == mess){
arr.push(mess);
}else{
arr.push(mess);
return console.log('--------> is '+ mess +' <--------');
}
}
}
}
}());
// for
var i, myarray = [];
for (i = myarray.length; i--;) {
// выполнить какие-либо операции над myarray[i]
}
var myarray = [],
i = myarray.length;
while (i--) {
// выполнить какие-либо операции над myarray[i]
}
// цикл for-in
for (var i in man) {
if (man.hasOwnProperty(i)) { // фильтрация
console.log(i, “:”, man[i]);
}
}
for (var i in man) {
if (Object.prototype.hasOwnProperty.call(man, i)) { // фильтрация
console.log(i, “:”, man[i]);
}
}
var i,
hasOwn = Object.prototype.hasOwnProperty;
for (i in man) {
if (hasOwn.call(man, i)) { // фильтрация
console.log(i, “:”, man[i]);
}
}
if (typeof Object.protoype.myMethod !== “function”) {
Object.protoype.myMethod = function () {
// реализация...
};
}
// switch
var inspect_me = 0,
result = ‘’;
switch (inspect_me) {
case 0:
result = “zero”;
break;
case 1:
result = “one”;
break;
default:
result = “unknown”;
}
// eval
console.log(typeof un); // “undefined”
console.log(typeof deux); // “undefined”
console.log(typeof trois); // “undefined”
var jsstring = “var un = 1; console.log(un);”;
eval(jsstring); // выведет “1” не рекомендуется
jsstring = “var deux = 2; console.log(deux);”;
new Function(jsstring)(); // выведет “2”
jsstring = “var trois = 3; console.log(trois);”;
(function () {
eval(jsstring);
}()); // выведет “3”
//конструктор
function Waffle() {
var me = {};
me.tastes = “yummy”;
return me;
}
// JSON
// входная строка в формате JSON
var jstr = ‘{“mykey”: “my value”}’;
// предпочтительный способ
var data = JSON.parse(jstr);
var dog = {
name: “Fido”,
dob: new Date(),
legs: [1, 2, 3, 4]
};
var jsonstr = JSON.stringify(dog);
// в результате будет получена строка jsonstr:
// {“name”:”Fido”,”dob”:”2010-04-11T22:36:22.436Z”,”legs”:[1,2,3,4]}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment