【问题标题】:Lis properties of CanvasRenderingContext2DCanvasRenderingContext2D 的 Lis 属性
【发布时间】:2016-01-26 13:19:38
【问题描述】:

您好,我正在尝试列出 CanvasRenderingContext2D 对象的所有方法和属性。我成功地列出了方法,但是当我尝试列出属性时却得到了奇怪的结果。我得到的只是重复多次的相同属性的数组。任何人都可以帮助我吗?

var canvas = document.querySelector('#canvas');
var ctx = canvas.getContext('2d');

 var methods = [];
        for (var m in ctx) {
            if (typeof ctx[m] == "function") {
                methods.push(m);
                methods.join(',');
            }
        }
        var methodsContainer = document.querySelector('#methods');
        for(var i = 0; i < methods.length; i++) {
            var opt = methods[i];
            var el = document.createElement("option");
            el.textContent = opt;
            el.value = opt;
            methodsContainer.appendChild(el);
        }
  var properties = [];
        for (var key in ctx) {
            if (Object.getOwnPropertyNames(ctx)) {
                properties.push(m);
                properties.join(',');
            }
        }

        var propertiesContainer = document.querySelector('#properties');
        for(var i = 0; i < methods.length; i++) {
            var opt = properties[i];
            var el = document.createElement("option");
            el.textContent = opt;
            el.value = opt;
            propertiesContainer.appendChild(el);
        }
  <canvas id="canvas"></canvas> 
  
  <h5>Methods</h5>
  <select id="methods">

  </select>
  <br/>
  <h5>Properties</h5>
  <select id="properties">

  </select>

【问题讨论】:

  • 你总是在推最后一个方法。 (properties.push(m))。另外,方法是属性,如果你不再次检查这是否是一个方法,你会得到它两次。

标签: javascript canvas


【解决方案1】:

这一行(声明属性变量后):

for(var i = 0; i < methods.length; i++) {

应该是:

for(var i = 0; i < properties.length; i++) {

当你应该循环属性时,你是为了循环方法具有值的次数

这行也是:

for (var key in ctx) {
        if (Object.getOwnPropertyNames(ctx)) {
            properties.push(m);
            properties.join(',');
        }
    }

当您可能打算按“键”时,您正在推动 m 变量

【讨论】:

  • 哦,是的,这是一个愚蠢的错字...但是更改它并没有解决问题:(
  • 这一行怎么样:properties.push(m); m在哪里声明,应该是key吗?
  • 是的,就是这样:) 复制代码时的简单错误。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 2021-12-21
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多