Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 16.01.2010, 17:08
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Octane, огромнейшее Вам спасибо...
Ответить с цитированием
  #12 (permalink)  
Старый 17.01.2010, 11:10
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Вот, что получилось.
А как вы считаете стоит ли так делать?
Просто есть $ а хочется в противоположность ему рубль то есть р
и все команды писать на русском.
Стоит ли так делать?
function р(id) {
	    return new р.wrapper(id);
	}
	 
	р.wrapper = function (id) {
	    this.id = id;
	};
	 
	р.wrapper.prototype = р.prototype = {
	    constructor: р,
	    загрузить: function (data) {
	        alert("this.id="+this.id+"\n");
	        alert("data="+data+"\n");
	    },
	    test: function () {
	        alert(this.id.nodeName);
	        return this;
	    }
	};

р("Привет").загрузить("Ураааа");

Последний раз редактировалось mycoding, 17.01.2010 в 13:22.
Ответить с цитированием
  #13 (permalink)  
Старый 17.01.2010, 18:07
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Можно сказать это первый релиз своего jquery, огромнейшее спасибо Octane.
Так если глянуть ничего сложного, хотя не совсем пока понимаю вот эту строчку
$.any.prototype = $.prototype = {constructor: $};

А так всё нормально. Ещё когда смотришь на jquery знак $ так пугает, думаешь это наверное что-то супер навороченное, а это просто название функции всего навсего.
<html>

<body>
ljkj
<div id=my style="border:5px solid #8899ff">HI</div>
</body>

</html>
<script>
function $$(id) 
{ 
return document.getElementById(id);
}
 
function $(id) 
{
   return new $.any(id);
}
	 
$.any = function (id) 
{
    this.id = id;
};
 
$.any.prototype = $.prototype = {constructor: $};

$.prototype.text = function(data)
{
 var id=this.id;
 $$(id).innerHTML=data;
return this;
}

$.prototype.css = function(property,data)
{
 var id=this.id;
$$(id).style[property]=data;
return this;
}

$.prototype.load = function(data)
{
 var id=this.id;
 var xml;

  if(window.ActiveXObject)
  {
   try
   {
	xml=new ActiveXObject("Microsoft.XMLHTTP");
   }
   catch (e)
   {
	xml=false;
   }
  }
  else
  {
   try
   {
	xml=new XMLHttpRequest();
   }
   catch (e)
   {
	xml=false;
   }
  }

  if(!xml) alert("Error creating the XMLHttpRequest object");

 
  xml.onreadystatechange = function()
  { 
     if(xml.readyState != 4 || xml.readyState==0)
     {   
	$$(id).innerHTML=" <img src='/img/pb.gif'> ";	
     }
     if(xml.readyState == 4)
     {
	if(xml.status == 200)
	{
  	   $(id).text(xml.responseText);
	}	
	else	
	{
	   $(id).text("Error: returned status code " + xml.status + " " + xml.statusText);
						}	
	} 
      }; 
 xml.open("GET", data, true); 
 xml.send(null);
return this;
}

$("my").text("Через 5 секунд суда загрузится другое слово")
setTimeout('$("my").text("Скоро кое что ещё поменятеся")',5000);
setTimeout('$("my").css("border","1px solid #888888")',10000);
</script>

Последний раз редактировалось mycoding, 17.01.2010 в 20:50.
Ответить с цитированием
  #14 (permalink)  
Старый 19.01.2010, 21:23
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от mycoding
Просто есть $ а хочется в противоположность ему рубль то есть р
и все команды писать на русском.
yet another 1C? Латиница используется не потому, что пендосы такие крутые, а потому, что она - lingua franca для программистов, имхо
Ответить с цитированием
  #15 (permalink)  
Старый 19.01.2010, 22:27
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от mycoding
Так если глянуть ничего сложного, хотя не совсем пока понимаю вот эту строчку
$.any.prototype = $.prototype = {constructor: $};
Ну обёртку-конструктор any ты ввел, чтобы избавится от new перед $:
function $(id) {
    return new any(id);
}

function any(id) {
    …
}

any.prototype.text = function (…) {…};

any нам не нужен больше нигде, кроме как в функции $, поэтому, чтобы он не валялся в глобальной области видимости, просто переносим его в свойства функции $:
function $(id) {
    return new $.any(id);
}

$.any = function (id) {
    …
};

$.any.prototype.text = function (…) {…};


а чтобы вообще забыть про этот any, инициализируем его прототип ссылкой на прототип $:
function $(id) {
    return new $.any(id);
}

$.any = function (id) {
    …
};

$.any.prototype = $.prototype;

$.prototype.text = function (…) {…};

теперь $.any.prototype и $.prototype указывают на один и тот же объект, но нам удобнее использовать ссылку $.prototype, про $.any.prototype забываем.

чтобы каждый раз при создании нового метода не писать $.prototype.methodName, можно сделать так:
$.prototype = {
    method1: function (…) {…},
    method2: function (…) {…},
    method3: function (…) {…}
};

но надо не забыть, что конструктор у нас $.any и методы должны находится в его прототипе:
$.prototype = {
    method1: function (…) {…},
    method2: function (…) {…},
    method3: function (…) {…}
};

$.any.prototype = $.prototype;

или короче
$.any.prototype = $.prototype = {
    method1: function (…) {…},
    method2: function (…) {…},
    method3: function (…) {…}
};

но при инициализации прототипа новым объектом, теряется ссылка на конструктор, поэтому и определяем её вручную ($.any нам не нужен, поэтому напишем просто $):
$.any.prototype = $.prototype = {
    constructor: $,
    method1: function (…) {…},
    method2: function (…) {…},
    method3: function (…) {…}
};

вот и получается та штука, что я показал в первый раз:
function $(id) {
    return new $.any(id);
}

$.any = function (id) {
    …
};

$.any.prototype = $.prototype = {
    constructor: $,
    method1: function (…) {…},
    method2: function (…) {…},
    method3: function (…) {…}
};


ссылка на конструктор хоть и не совсем правильная, но остается работоспособной, потому что return из конструктора вернет нужный объект:
var obj = new $(…); // так тоже будет работать

Последний раз редактировалось Octane, 19.01.2010 в 22:36.
Ответить с цитированием
  #16 (permalink)  
Старый 19.01.2010, 22:27
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Аргументированно, меня тоже отбило желание эта статья на русском делать свой framework...
Ответить с цитированием
  #17 (permalink)  
Старый 19.01.2010, 22:32
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Если честно ничего не понял, но думаю если раз 10 прочитать то пойму...
Ответить с цитированием
  #18 (permalink)  
Старый 21.01.2010, 10:44
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Как сделать чтобы можно было вызвать это же метод $ например вот так
my('div1').text('Привет'); ? Можно конечно просто весь код внутри поментяь, но в jquery , как то по другому , но что-то не пойму
Ответить с цитированием
  #19 (permalink)  
Старый 21.01.2010, 11:13
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Создать еще одну глобальную ссылку на функцию $. Читай теорию, разбирайся, а то кинулся функционал реализовать, а как основы работают не понимаешь, без этого ничего хорошего не получится.
Ответить с цитированием
  #20 (permalink)  
Старый 21.01.2010, 13:54
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Читаю ту же книгу Седьмой день - 85 страница.
Очень хорошая книга.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как это сделать oxotnik Общие вопросы Javascript 11 19.01.2010 09:57
Как это сделать? PAMAC Общие вопросы Javascript 2 10.10.2009 21:02
Как сделать, чтобы музыка <embed> на странице не играла только при первом посещении? Bad Request Общие вопросы Javascript 22 27.07.2009 19:44
Как сделать чтобы картинка не открывалась по ссылке а скачивалась test Общие вопросы Javascript 4 20.06.2009 08:35
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24