2012-06-23 2 views
0

Я уже знаю, как работают геттеры/сеттеры. например, делая inneHTML работу по нодлистовКак сделать динамический геттер/сеттер

Object.defineProperty(NodeList.prototype,'innerHTML',{set:function(a,b){for(b in this)if(this[b])this[b]['innerHTML']=a}}) 

Я хотел бы создать объект, который выводит что-то на основе имущества, к которому осуществляется доступ.

например:

dynamicGetter = function(property){return querySelectorAll(property)} 
myObject["div>ul>li>a"][0].innerHTML = "foo" 
myObject.div[0].style.background="red" 

Как я могу это сделать? Является ли это возможным?

+0

Не будет ли с помощью простой функции будет лучше – biziclop

+0

Вы не можете, JavaScript не имеют такой? – jcubic

+0

В будущем мы сможем использовать прокси-объекты: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Proxy – biziclop

ответ

0

Вот как это сделать: В настоящее время это работает только в Firefox :(

myObject = Proxy.create({ 
    get: function(x,property) { 
    return document.querySelectorAll(property); 
    } 
}); 

myObject["div>ul>li>a"][0].innerHTML = "foo" 
myObject.div[0].style.background="red" 
Смежные вопросы