2015-05-05 3 views
1

Я делаю JavaScript в node.js.Как обернуть или проксировать другой объект в JavaScript в Node.js

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

я мог бы построить структуру обертки держа объект

wrapper = { 
    object: SomeObject 
}; 

и адрес объекта через обертку разыменовать

wrapper.object.someFunction(); 

но я хочу быть прозрачным и использовать следующий синтаксис вместо:

wrapper.someFunction(); 

Я рассмотрел функции прокси-сервера ECMAScript 6 b ut постоянно ложился на ловушку функции apply(). Есть ли проблема с JavaScript V8 и Node.js, не совместимыми с ECMAScript 6.

Любые идеи?

ответ

0

То, что вы хотите сделать, это перегрузить «точка» оператора, что-то очень знакомое парням Python, в __getattr__ и __setattr__ функции.

В самом деле, способ сделать это в ECMAScript 6 является использование прокси-серверов, и, как говорит этот пост:

Доверенные позволяют создавать объекты, которые являются истинным прокси (фасады) для других объектов

Javascript overloading dot

проблема заключается в том, что NodeJS не поддерживает ECMAScript 6.

Так я вижу два решения:

  1. Почему бы вам не сделать что-то немного идиоматическое как, есть функция вывода, которая будет возвращать объект, таким образом, вы можете сделать

    wrapper.o().attribute = ... 
    
  2. Может попробовать IO.js, который поддерживает ECMAScript 6 и совместим с Node/npm?

Смежные вопросы