Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 13.03.2010, 21:28
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от YISHIMITSY
почему-то не работает...
а в консоль ошибок заглянуть?
ReferenceError: arg is not defined {  message="arg is not defined",  more...}
Ответить с цитированием
  #22 (permalink)  
Старый 14.03.2010, 11:51
Аспирант
Отправить личное сообщение для YISHIMITSY Посмотреть профиль Найти все сообщения от YISHIMITSY
 
Регистрация: 04.11.2008
Сообщений: 61

понял) а что проверяется этим: if(this.dom) во 2-й строке?
Ответить с цитированием
  #23 (permalink)  
Старый 14.03.2010, 11:59
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от YISHIMITSY
а что проверяется этим: if(this.dom) во 2-й строке?
Сообщение от Octane
Используется тот факт, что одна и таже функция может вызываться явным образом и в конструкторе. При вызове явным образом this указывает на window, так определяем, что нужно рекурсивно вызвать эту же фунции в конструкторе с тем же аргументом.
Но лучше на 2 конструктора расписать:
$('my').load(); Как сделать, чтобы это заработало
Ответить с цитированием
  #24 (permalink)  
Старый 14.03.2010, 22:43
Аспирант
Отправить личное сообщение для YISHIMITSY Посмотреть профиль Найти все сообщения от YISHIMITSY
 
Регистрация: 04.11.2008
Сообщений: 61

Octane, а если мне надо чтобы dom() и все методы от неё возвращали объект переданый dom, как так сделать? с методами я вроде понял: return this.node; там) а dom() можно?
Ответить с цитированием
  #25 (permalink)  
Старый 14.03.2010, 22:51
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

А смысл? Методы только в прототипе dom могут быть (кросс-браузерно), если DOM-элемент вернуть, никаких кастомных методов мы не получим.
Ответить с цитированием
  #26 (permalink)  
Старый 14.03.2010, 23:11
Аспирант
Отправить личное сообщение для YISHIMITSY Посмотреть профиль Найти все сообщения от YISHIMITSY
 
Регистрация: 04.11.2008
Сообщений: 61

ну мне нужно) например чтоб можно было написать и так: dom().style.color'=red'; независимо от методов. Так возможно сделать? (ток при этом чтоб методы тож имели туда доступ, как щас)

Последний раз редактировалось YISHIMITSY, 14.03.2010 в 23:15.
Ответить с цитированием
  #27 (permalink)  
Старый 14.03.2010, 23:14
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

никак

Еще по теме Оптимизация долларовой либы за счет prototype

Последний раз редактировалось Octane, 14.03.2010 в 23:24.
Ответить с цитированием
  #28 (permalink)  
Старый 14.03.2010, 23:26
Аспирант
Отправить личное сообщение для YISHIMITSY Посмотреть профиль Найти все сообщения от YISHIMITSY
 
Регистрация: 04.11.2008
Сообщений: 61

чё-то я ваще запутался с этим js... ( Но есть же вообще в природе какие-то способы сделать так: dom(arg).text('text') - это добавляет текст и возвращает arg и просто dom(arg) возвращает arg?
У вас в js-core если я правильно понял так и есть:

"В js-core функции core(…) и $(…) эквивалентны, и возвращают новую копию объекта core, содержащую ссылку на указанный узел.
function $(arg) {
return typeof arg == "string" ? document.getElementById(arg) : arg;
}"

Ток чё с методами тогда.. как совместить то эти вещи?

Последний раз редактировалось YISHIMITSY, 14.03.2010 в 23:38.
Ответить с цитированием
  #29 (permalink)  
Старый 14.03.2010, 23:44
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

function dom(arg) {

	var element = typeof arg == "string" ? document.getElementById(arg) : arg;
	if (!element) return null;

	var method, methods = dom.customMethods;
	for (method in methods) {
		if (methods.hasOwnProperty(method)) {
			element[method] = methods[method];
		}
	}

	return element;
}

dom.customMethods = {
	text1: function (str) {
		if (!arguments.length) return this.innerText || this.textContent;
		this.innerHTML = "";
		this.appendChild(document.createTextNode(str));
		return this;
	}
};

dom(document.body).text1("Тарам пам пам").style.backgroundColor = "#fee";


Сообщение от YISHIMITSY
В js-core функции core(…) и $(…) эквивалентны, и возвращают новую копию объекта core
тоже самое, что и
function dom(…) {…}
var $ = dom;

Последний раз редактировалось Octane, 14.03.2010 в 23:47.
Ответить с цитированием
  #30 (permalink)  
Старый 14.03.2010, 23:58
Аспирант
Отправить личное сообщение для YISHIMITSY Посмотреть профиль Найти все сообщения от YISHIMITSY
 
Регистрация: 04.11.2008
Сообщений: 61

Большое спасибо, то что нужно) последний вопрос, а по скорости это хуже или лучше чем использование prototype?
Ответить с цитированием
Ответ



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

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