Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #71 (permalink)  
Старый 28.05.2012, 23:13
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от melky
моя подпись
Ага. Всё, на базе той куйни, что я привел выше, можно легко сделать dataset.
comment = document.createComment("");
document.documentElement.firstChild.appendChild(comment);
comment.onpropertychange = function () { alert() }

function Data() {
   return { a:4 }
}
Data.prototype = comment
data = new Data
data.x = 5 // алерт

for (var i in data )console.log( i, data[i] )

Журнал: a4
Журнал: x5
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #72 (permalink)  
Старый 28.05.2012, 23:19
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от FINoM
Ага. Всё, на базе той куйни, что я привел выше, можно легко сделать dataset.
а для FF и других добавить event listener для DOMAttrModified.

оригинально!
Ответить с цитированием
  #73 (permalink)  
Старый 28.05.2012, 23:22
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от melky
а для FF и других добавить event listener для DOMAttrModified.
Разве у ff нет поддержки dataset?
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #74 (permalink)  
Старый 28.05.2012, 23:24
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Всё, закончил. http://learn.javascript.ru/play/zRz9xb
1 минус. При вызове element.dataset.myProp = val значение не будет занесено в element.attributes, но зато никаких пропертиченджей
_______________
опоздал немного

Последний раз редактировалось Раед, 28.05.2012 в 23:37.
Ответить с цитированием
  #75 (permalink)  
Старый 28.05.2012, 23:34
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Раед
опоздал немного
Да нет, там много полезного есть того, что лень самому писать
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #76 (permalink)  
Старый 28.05.2012, 23:42
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от melky
оригинально!
Оно то оригинально, но кто знал? Методом тыка получилось такое реализовать. А вот с defineProperty такой ход не прокатил.
_defineProperty= Object.defineProperty;
comment = document.createComment("");
document.documentElement.firstChild.appendChild(comment);

Object.defineProperty = function( object, property, desc ) {
    object.constructor.prototype = comment;
    _defineProperty(comment, property, desc)
}

o = {};
Object.defineProperty(o, 'x', {set: function(){ alert() }})
o.x = 4; // не работает
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #77 (permalink)  
Старый 29.05.2012, 00:13
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от FINoM Посмотреть сообщение
Да нет, там много полезного есть
Это я знаю. Вы лучше скажите, чего там нет, что вы с таким упорством пытаетесь присабачить туда createComment?
Ответить с цитированием
  #78 (permalink)  
Старый 29.05.2012, 00:19
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

FINoM,
плохой вариант, я пробовал.. в нем есть недостаток.. попробуй сделать так:
comment = document.createComment("");
document.documentElement.firstChild.appendChild(comment);
comment.onpropertychange = function () { alert() }
 
function Data() {
   return { a:4 }
}
Data.prototype = comment
data = new Data
data.x = 5 // алерт

data.y = 5 // херов а не алерт :(
 
for (var i in data )console.log( i, data[i] )
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #79 (permalink)  
Старый 29.05.2012, 00:24
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

и да добавлю, алерт срабатывает не при назначении свойства x а при назначении
comment.onpropertychange = function() {
	alert( window.event.propertyName );
}
тоесть на самого себя
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #80 (permalink)  
Старый 29.05.2012, 00:29
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

devote,
в вашем примере (new Data) .constructor !== Data

Последний раз редактировалось Раед, 29.05.2012 в 00:32.
Ответить с цитированием
Ответ



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

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