Java-Script

Библиотеки

Шаблогизаторы

  • Backbone.js
+function(y){
return y+1;
}(6);
# Функция с определенным кол-вом параметров
function f(a, b, c, d) { console.log(a + b + c + d) }
 
# Обычный способ вызова
f(1, 2, 3, 4);
 
# f.call()
# Метод call жёстко фиксирует количество аргументов, через запятую
f.call(context, 1, 2, 3, 4);
 
# Вызов функции при помощи func.apply работает аналогично func.call, но принимает массив аргументов вместо списка:
f.apply(context, [1, 2, 3, 4]);

При помощи call/apply можно легко взять метод одного объекта, в том числе встроенного, и вызвать в контексте другого.

function sayHi() {
 
  # Используем эту технику для упрощения манипуляций с arguments. Как мы знаем, это не массив, а обычный объект.. Но как бы хотелось вызывать на нём методы массива.
  arguments.join = [].join; // одолжили метод (1)
 
  var argStr = arguments.join(':');  // (2)
 
  alert(argStr);  // сработает и выведет 1:2:3
 
}
 
sayHi(1, 2, 3);

Html:

<script type="text/javascript">var STATICVER = 83;</script>

Java-script:

try{
  js = {"STATICVER": STATICVER};
} catch(e){ js = {};};
 
js.include = function(path) {
  if (typeof(this.STATICVER) == "undefined") {
		this.STATICVER = new Date().getUTCDate();
	}
	document.write('<script type="text/javascript" src="' + path.replace('STATICVER', this.STATICVER) + '"></sc' + 'ript>');
}
 
js.dynamicInclude = function(path, callback) {
	if (typeof(this.STATICVER) == "undefined") {
		this.STATICVER = new Date().getUTCDate();
	}
	$.ajax({
		dataType: "script",
		cache: true,
		url: "/js/" + this.STATICVER + "/" + path
	}, callback);
}
 
js.include('/js/STATICVER/crimea.js');

Обещания / Promises

Паттерн стратегии на Java-Script

var Animal = function() {}
Animal.prototype.say = function(t) {}
 
var Dog = function() {}
var Cat = function() {}
 
var Say = function(obj) {
  obj.say();
};
 
Dog.prototype.say = function() {
 Animal.prototype.say.call(this);
 console.log('gav');
}
 
Cat.prototype.say = function() {
 Animal.prototype.say.call(this);
 console.log('myau');
} 
 
var dog = new Dog();
var cat = new Cat();
 
Say(cat);
Say(dog);

Библиотеки

  • Какполучить размер ассоциативного массива?
    • Object.keys(data.data).length где data.data - является массивом