Nano Hash - криптовалюты, майнинг, программирование

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

В этом вопросе ОП спрашивал о том, как избежать раскрытия частных объектов снаружи в компоненте. Я гуглил и не нашел способа сделать наоборот. Скажем, у меня есть компонент ниже, и я хочу получить доступ к privateObj либо с моей веб-страницы, либо с родительского компонента. Как это можно сделать с помощью JavaScript и Polymer API?

<polymer-element name="animating-element">
   <script>    
     var privateObj = {};

     privateObj.internalState = 0; 

     //private static method
     privateObject.setupState = function(polymerObject) {
        if(polymerObject.stateExposedToOutside == /* some conditions */) { 
           privateObject.internalState = 1;
        }
     }

     Polymer('animating-element', {
        stateExposedToOutside: 0,
        ready: function() {

          privateObj.setupState(this);
          this.animate();

        },
        animate: function() {

        }
      });    
   </script>
</polymer-element>

  • Чтобы уточнить, ваш вопрос заключается в том, как сделать частный объект неприватным? Какой тогда смысл делать вещи приватными? 27.06.2016
  • @ceejayoz Да, я знаю, что раскрытие личных вещей противоречит предпосылке инкапсуляции компонентов, но если это можно сделать каким-то образом, я бы предпочел, поскольку это сторонний компонент, и я не могу дождаться, пока автор примет запрос на извлечение и отправьте исправленное приложение. Кроме того, это именно то, о чем Polymer, не так ли, заполняя пробелы, в то же время стандартизируя веб-компоненты. 27.06.2016
  • Это не противоречит предпосылке, это противоречит функциональности языка. Скорее всего, вам придется разветвлять компонент до тех пор, пока PR не будет объединен (или если он будет отклонен). Это частный объект. Весь смысл в том, чтобы это было частным, в том, что это личное. 27.06.2016

Ответы:


1

Вы можете создать метод public внутри конструктора Polymer, который вернет значение вашего privateObj

 privateObjValue:function(){
   return privateObj;
 }

Теперь вы можете прочитать значение объекта, используя this.privateObjValue() (не уверен, как это работает в Polymer 0.5)

27.06.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..