javascript Harmonia и Proxy
Что думаете по этому поводу? Это же жесть как мощно! https://developer.mozilla.org/en/Jav..._Objects/Proxy |
А __noSuchMethod__ так и остался нестандартным?
|
хз но пока это всего лишь черновик
|
что такое __noSuchMethod__ ?
|
Цитата:
https://developer.mozilla.org/en/Jav...t/NoSuchMethod ({ __noSuchMethod__: function(meth, args){ //обработчик: meth === 'method', args ~ [1,2,3] } }).method(1,2,3); //не выдаст ошибки В общем, не нашел чего-то очень полезного. Хотя я и не сильно углублялся. |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Но если бы была такая ловушка(а что её нет я не уверен), можно сделать так же как и в случае с обычным доступом к свойству. Смотреть есть ли оно в нужном обьекте, если нет, то при желании можно сделать запрос к цепочке прототипов и посмотреть там. это я думаю не проблема. |
Эмуляция __noSuchMethod__
Используя Прокси возможно эмулировать хук __noSuchMethod__ в тех браузерах, которые его не поддерживают (но сейчас это не актуально). function MyObject() {}; MyObject.prototype = Object.create(NoSuchMethodTrap); MyObject.prototype.__noSuchMethod__ = function(methodName, args) { return 'Hello, '+ methodName; }; new MyObject().foo() // returns 'Hello, foo' Этот объект использует NoSuchMethodTrap-прокси в котором ловушка get заменяет оригинальный __noSuchMethod__. var NoSuchMethodTrap = Proxy.create({ get: function(rcvr, name) { if (name === '__noSuchMethod__') { throw new Error("receiver does not implement __noSuchMethod__ hook"); } else { return function() { var args = Array.prototype.slice.call(arguments); return this.__noSuchMethod__(name, args); } } } }); |
Часовой пояс GMT +3, время: 08:44. |