【发布时间】: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