Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.03.2009, 17:45
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://ru.wikipedia.org/wiki/%D0%A8%...BD%D0%B8%D1%8F
Ответить с цитированием
  #12 (permalink)  
Старый 19.03.2009, 17:46
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

спасибо.
щаз почитаю
Ответить с цитированием
  #13 (permalink)  
Старый 19.03.2009, 17:51
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

Gvozd,
Цитата:
что такое паттерн делегатор?
http://ru.wikipedia.org/wiki/%D0%A8%...BD%D0%B8%D1%8F
Но я не совсем это имел в виду
Ответить с цитированием
  #14 (permalink)  
Старый 19.03.2009, 18:01
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

no_alex,
так вам мой код подходит, или как?
или я вас неправильно понял?
Ответить с цитированием
  #15 (permalink)  
Старый 19.03.2009, 18:06
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

Gvozd,
Цитата:
если я правильно понял вашу задачу, то вот два варианта решения:
Не совсем правильно...
У меня как раз цель отказаться от передачи this через аргументы. Я хочу упростить вызов этих методов. С this в аргументах я эту задачу уже решил, но слишком часто приходится писать этот this и хочется эту проблему упростить.

Второе, вызовов типа:
A.func2.apply(this,[])

у меня не будет. Все методы вызываются у "своих" объектов.

И третье, созданные объекты совершенно не обязательно являются свойствами объекта "windows". Мне не известно где они будут располагаться.

Последний раз редактировалось no_alex, 19.03.2009 в 18:08.
Ответить с цитированием
  #16 (permalink)  
Старый 19.03.2009, 18:13
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от no_alex
Второе, вызовов, типа:
A.func2.apply(this,[])
у меня не будет все методы вызываются у "своих" объектов.
это на каком языке.отдалено напоминает русский.попробуйте выразить эту мысль по другому, потому что я вас не понимаю

Сообщение от no_alex
И третье, созданные объекты совершенно не обязательно являются свойствами объекта "windows". Мне не известно где они будут располагаться.
глупость сказали.я написал сравнение с window.B1 Только для того чтобы показать что объект this/that в каждом случае указывает именно на объект его вызвавший.
если объект B1 юудет находится в любом другом месте, то в коде ничего не поменяется кроме того, что это сравнение в таком виде будет false выдавать. но this/that все равно будет указывать именно на него, где бы он не был
Ответить с цитированием
  #17 (permalink)  
Старый 19.03.2009, 18:18
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

Цитата:
я написал сравнение с window.B1
Сорри. Я понял - это чисто для проверки.

В целом идею Вы поняли правильно, только вот если-бы реализовать ее "на автомате". Чтобы this не передавать, а определять автоматически.

Цитата:
попробуйте выразить эту мысль по другому, потому что я вас не понимаю
В Вашем примере Вы вызываете метод обекта A, так чтобы this указывал на другой объект. Я таких вызавов не планирую. Во всех методах обекта A, this всегда должен указывать на объект A.

Последний раз редактировалось no_alex, 19.03.2009 в 18:33.
Ответить с цитированием
  #18 (permalink)  
Старый 19.03.2009, 18:20
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

п кажется я понял, что вы хотите теперь:
A=
	{
	'func':function(that)
		{
		//that указывает на объект, вызвавший функцию
		with(that)
			{
			alert(a)
			//тут переменная a является свойством a вызвавшего объекта
			}
		},
	'func2':function()
		{
		//this указывает на объект, вызвавший функцию
		with(this)
			{
			alert(b)
			//тут переменная a является свойством b вызвавшего объекта
			}
		}
	}

B_proto=
	{
	'function':function()
		{
		console.log([this,this==window.B1,this==window.B2])//this указывает на B1, вызвавший функцию
		A.func(this)
		A.func2.apply(this,[])
		}
	}
function B()
	{
	//functio
	this.a='qwerty';
	this.b='йцукен';
	}
B.prototype=B_proto;

B1=new B();
B1.function()

B2=new B();
B2.a='asdfgh'
B2.b='фывапр'
B2.function()
Ответить с цитированием
  #19 (permalink)  
Старый 19.03.2009, 18:21
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от no_alex
В целом идею Вы поняли правильно, только вот если-бы реализовать ее "на автомате". Чтобы this не передавать, а определять автоматически.
а чем вам метод с apply -то не годится.ю
всего лиш 13 лишних символов в ввашем коде?
Ответить с цитированием
  #20 (permalink)  
Старый 19.03.2009, 18:29
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

вот в таком варианте функции ничего лишнего не передается, и не используется apply
A=
	{
	'func':function()
		{
		// тут this указывает на вызвавший объект
		alert(this.a)
		with(this)
			{
			alert(a)
			}
		}
	}

B_proto=
	{
	'function':function()
		{
		this.func()
		},
	'func':A.func,
	}
function B()
	{
	//functio
	this.a='qwerty';
	}
B.prototype=B_proto;

B1=new B();
B1.function()

B2=new B();
B2.a='asdfgh'
B2.function()
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лучшая книга по JavaScript Systemnik Оффтопик 27 26.08.2012 16:54
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
Современная книга по JavaScript twolf Оффтопик 18 21.02.2009 01:20
Программист на JavaScript (удалённо) Vadym Работа 1 28.01.2009 13:57
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43