Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.01.2012, 17:36
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Объект-функция с заданным прототипом
Возможно я туплю.
Как мне создать объект функции, чтобы прототип у него был отличный от Function.prototype ?
Сам Function.prototype не меняется, и всегда указывает на один и тот же объект.
Зато у него можно задавать свойства, но надо именно для конкретных новосозданных функций, конкретный прототип.

PS Ответ на вопрос зачем это мне: Just for FUN.
Ответить с цитированием
  #2 (permalink)  
Старый 28.01.2012, 18:31
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

как вариант, использовать обёртку. (у меня не получилось)

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

Сообщение от melky
как вариант, использовать обёртку. (у меня не получилось)
Слабо представляю как обертка могла бы помочь.
ведь обертка тоже функция, и вопрос о способе задать прототип для функции остается актуальным
Сообщение от melky
а ещё есть паттерн декоратор.
те же яйца, только в профиль, не?
Ответить с цитированием
  #4 (permalink)  
Старый 28.01.2012, 18:58
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

__proto__ как вариант. Но работает не везде (Хотя во всех имеющихся у меня распространённых браузерах (Opera, Chromium, FF) заработало).

Последний раз редактировалось B@rmaley.e><e, 28.01.2012 в 19:05.
Ответить с цитированием
  #5 (permalink)  
Старый 28.01.2012, 19:14
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

B@rmaley.e><e,
Не, не то
Ответить с цитированием
  #6 (permalink)  
Старый 28.01.2012, 21:35
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Что мешает обертку использовать? И Наследовать её от Function
или что мешает использовать __proto__ ?
Тебе код написать?
Ответить с цитированием
  #7 (permalink)  
Старый 28.01.2012, 21:54
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

function XFunction(args, body) {
	var func = Function(args, body);
	func.__proto__ = Object.create(XFunction.prototype);
	return func;
}

XFunction.prototype = Object.create(Function.prototype);

var f = new XFunction("", "return 1");

Function.prototype.test = function () {
	return 2;
};

XFunction.prototype.xTest = function () {
	return 3;
};

console.log(f());                    //1
console.log(f.test());               //2
console.log(f.xTest());              //3
console.log("apply" in f);           //true
console.log(f instanceof Function);  //true
console.log(f instanceof XFunction); //true


В IE7-9 не работает
Ответить с цитированием
  #8 (permalink)  
Старый 28.01.2012, 21:55
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Livaanderiamarum
или что мешает использовать __proto__ ?
Работает не во всех браузерах.
IE8, например
В общем не подходит.

Сообщение от Livaanderiamarum
Что мешает обертку использовать? И Наследовать её от Function
Сообщение от Livaanderiamarum
Тебе код написать?
Как я уже сказал, я слабо представляю чем может помочь обертка, в данной ситуации.
Поэтому да, написать код.
-------------------------------------------
Сообщение от Octane
В IE7-9 не работает
Хочется отталкиватся не от хаков браузеров, а от более чистого JS

Последний раз редактировалось Octane, 29.01.2012 в 01:13. Причина: Объединение сообщений
Ответить с цитированием
  #9 (permalink)  
Старый 28.01.2012, 22:14
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Ещё можно поиграться с геттерами. Тоже хак, но, возможно, будет более кроссбраузерным.
Ответить с цитированием
  #10 (permalink)  
Старый 28.01.2012, 22:41
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Как выглядит обьект функция)? долбаная консоль показывает текст.
-------------------------------------------
Черт, без __proto__ сложно))

блин, нельзя создать функцию ни чем кроме как конструктром Function((? а __proto__ нативно, задается ТОЛЬКО при создании обьекта.((((

Последний раз редактировалось Octane, 29.01.2012 в 01:12. Причина: Объединение сообщений
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать ссылку на объект а не объект возникновения события Blazze Events/DOM/Window 0 11.10.2011 00:45
jQuery - объект или функция? jazzz13 jQuery 8 16.08.2011 04:01
функция должна возвращать объект без одного свойства blackzub Общие вопросы Javascript 4 14.12.2009 19:25
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Получить объект содержащий caller no_alex Общие вопросы Javascript 14 20.03.2009 21:37