首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用javascript解释something.logic?

用javascript解释something.logic?
EN

Stack Overflow用户
提问于 2016-07-28 23:39:00
回答 1查看 94关注 0票数 0

目前,我对javascript还很陌生,我偶然发现了一个javascript关键字(.logic)。我试着用谷歌搜索这个关键字,但我找不到答案。谁能解释一下这是什么意思?什么时候,为什么我们要使用它?它看起来像是在按逻辑顺序创建对象。

以下是代码的片段:

代码语言:javascript
复制
var checkboxes = slice(document.querySelectorAll('.checkbox'));
  for (var checkbox of checkboxes)
    checkbox.logic = new Checkbox(checkbox); 

*注意:我现在正在尝试学习ARIA。这就是我不使用原生复选框的原因。

下面是HTML部分的代码:

代码语言:javascript
复制
<div class="demo">

  <h2>Custom checkboxes</h2>

  <div tabindex="0" class="checkbox" checked>
    Tim-Tams
  </div>
  <div tabindex="0" class="checkbox">
    Mint slices
  </div>    

</div>

以下是javascript代码:

代码语言:javascript
复制
    function Checkbox(el) {
    this.el = el;

    this.el.addEventListener('keydown', this.handleKeyDown.bind(this));
    this.el.addEventListener('click', this.toggle.bind(this));

    // Initialize role and aria-checked state.
    this.el.setAttribute('role', 'checkbox');
    if (this.el.hasAttribute('checked')) {
      this.el.setAttribute('aria-checked', 'true');
    } else {
      this.el.setAttribute('aria-checked', 'false');
    }
  }

  Checkbox.prototype.handleKeyDown = function(e) {
    switch(e.keyCode) {
      case VK_ENTER:
      case VK_SPACE: {
        this.toggle();
        break;
      }
    }
  };

  Checkbox.prototype.toggle = function() {
    if (this.el.hasAttribute('checked')) {
      this.el.removeAttribute('checked');

      // Keep checked attribute and aria-checked in sync.
      this.el.setAttribute('aria-checked', 'false');
    } else {
      this.el.setAttribute('checked', '');

      // Keep checked attribute and aria-checked in sync.
      this.el.setAttribute('aria-checked', 'true');
    }
  };

  //HERE IS THE QUESTION PART================================
  var checkboxes = slice(document.querySelectorAll('.checkbox'));
  for (var checkbox of checkboxes)
    checkbox.logic = new Checkbox(checkbox);
EN

回答 1

Stack Overflow用户

发布于 2018-06-23 09:05:36

所以,我在原型继承方面相当初级,所以任何人都可以来验证/澄清我的答案。

据我所知,.logic不是原生JavaScript函数或方法,而是将属性作为原型继承的一部分添加到对象中。

这段代码在做什么。

代码语言:javascript
复制
var checkboxes = slice(document.querySelectorAll('.checkbox'));
for (var checkbox of checkboxes)
checkbox.logic = new Checkbox(checkbox);

...is使用.slice函数将自定义html复选框转换为对象对象(这些对象类似于数组,因此它们可以转换为对象)。

简而言之,checkbox.logic类似于....

代码语言:javascript
复制
var checkbox = {logic: "doing stuff with the Checkbox class that was called"};

这不是一个完美的比喻,但我希望这能澄清这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38640950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档