четверг, 24 февраля 2011 г.

Что является this в функции

Чтобы дать исчерпывающий ответ на этот вопрос приведу следующий пример:

var myFunc = function(){
  console.log(this);
}

var myObj = new myFunc(); // тут myObj
myFunc();// тут window

Из этого примера следует, что если мы в методе обьекта вызываем функцию и она что-то присваивает в this, то это заносится в тело нашего обьекта.

среда, 23 февраля 2011 г.

JSONP

Один из видов реализоации кросс-доменных запросов - вставка тега скрипта в тело страницы.

Это родило JSON with padding(JSONP), формирую строку запроса мы передаем параметр, который указывает с помошью какого колбека мы готовы обработать полученный джейсон. Сервер предоставляющий джейсон обворачивает свой ответ в этот колбек:
<script type="text/javascript"
         src="http://server2.example.com/getjson?jsonp=parseResponse">
 </script>


Сервер отвечает:
parseResponse({"Name": "Cheeso", "Rank": 7});

Осознал какую опасность может приносить такой сприпт, он может придти попробовать прочитать куку и сам вставить тег-скрипта или картинки с сорсом на свой сервер, а в ури указать секретные данные -- все данные прочитаны)

Разница между Get Utility и Connection Manager

Второя это обвертка над XMLHttpRequest-ом в YUI2, а на этот обьект накладывается политика одного источника (тот же домен, тот же протокол, тот же порт).
А первое это вставка в код тегов скприпт и стайл, что позволяет использовать кроссдоменный скриптинг(его подвид JSONP). В эти скрипты приходит джейсон, который выполняется и предоставляет данные с дргугого домена, но кроме этого он может рыть куки и делать другие гадости поэтому нужно JSONP использовать только из надежных источников.

YUI2

В YUI2 YAHOO.util.Event -- обьект, который отвечает за вобытия.
С помошью его можно прикручивать как существующие браузреные события, так и собственные-кастомные

YAHOO.util.Event.addListener("id_of_container", "click", handler); // так прикручиваются события

В хендлере мы можем исользовать:
stopEvent
preventDefault
stopPropagation  --- яваскипт стандарт прочитать в jquery об этом.
Они реализованы через яху обьект, что позволяют срабатывать им даже в тех браузерах, в которых не реализована поддержка.
YAHOO.util.Event.preventDefault(e); -- так вызывается превентДефолт в хендлере, где е- это событие которое приходит первым аргументом в обработчик(хендлер)

понедельник, 14 февраля 2011 г.

Встроеная функция Function

Эта встроенная функция-конструтор вызывается каждый раз, когда мы создаем функцию в javascript.

function myFunction(arg0,arg1,...argN){...}
myFunction = function(arg0,arg1,...argN){...}

Первые два варианта обьявления функции это эквивалент:
myFunction = new Function(arg0,arg1,...argN,{...});

суббота, 12 февраля 2011 г.

VLAN

VLAN -- виртуальный лан. ЛАН - широковещаетльный домен - это компьютеры соеденены свичем и для общения в этой сети не нужен маршрутизатор. Виртуальный лан -- это когда имитируется ш.домен для избранных компьютеров из разный подсетей(ланов), которые обьединены между собой марштрутизаторами.
Не путать св ВПН, потому что это создание сети через небезопасные соединения, через интернет. В случае влана, компьютеры находятся в одной физической сети предприятия, но в разных подсетях, а им нужно создать среду какбуд-то они в одной подсети.

воскресенье, 6 февраля 2011 г.

ООП javascript

Если нужно выбрать только свойства обьекта, а не его прототипа то:
for(prop in object) if (object.hasOwnProperty(prop)) {
    //...
}

Наследование в javascript
В самом языке есть только одно наследование - наследование на прототипах. Наслдеование на классах, это ручное наследование - трюк.
Классом для обькта, является функция, которая через оператор new создала этот обьект. Чтобы проверить на принадлежность обьекта определенному классу, нужно использовать оператор instanceof. Эта функция называется функция конструтор(пример с javascript.ru):
function Animal(name) {
  this.name = name
  this.canWalk = true
}
 
var animal = new Animal("скотинка")

Родное наслдование это наследование через прототип, что означает что обьект наследывает свойста и методы другого существующего на этот момент обьекта. Каждый обьект имеет прототип, ссылка на него хранится в свойстве [[prototype]], по стандарту она не обязана быть окрыта для чтения/записи, но в фаерфоксе это обычная ссылка __proto__. Единственный кроссбраузерный способ задать прототип это через функцию конструтор через параметр обьекта Function.prototype:
Animal.prototype = thing;

среда, 2 февраля 2011 г.

Изменение значение автоинкримента

Бывает в MySQL когда нужно почистить всю таблицу и начать ее заполнять с нуля, при этом было бы не плохо сделать ресет и счетчику автоинкрементного значения. Делается это так:
ALTER TABLE tablename AUTO_INCREMENT = 1

Теперь после этого следующий вставленные рекорд будет под номером 1.