2018年1月23日火曜日

等価かどうか実際に確認してみた。(for…in、Safari(Web Browser))

少し違ったり。length プロパティが列挙可能ではない。(for…in の問題?)

HTML5

<pre id="output0"></pre>
<input id="n0" type="number" step="1" value="10">
<button id="run0">run</button>
<button id="clear0">clear</button>

<script src="sample.js"></script>

JavaScript

let div0 = document.querySelector('#graph0'),
    pre0 = document.querySelector('#output0'),
    btn0 = document.querySelector('#run0'),
    btn1 = document.querySelector('#clear0'),
    input_n0 = document.querySelector('#n0'),
    inputs = [input_n0],
    p = (x) => pre0.textContent += x + '\n',
    newArray1 = (n) => {
        var a = Object.create(null);
        Object.setPrototypeOf(a, Array.prototype);
        a.length = n;
        return a;
    },
    // var を let に変えただけ
    newArray2 = (n) => {
        let a = Object.create(null);
        Object.setPrototypeOf(a, Array.prototype);
        a.length = n;
        return a;
    };

let output = () => {
    let n = parseInt(input_n0.value, 10),
        a1 = newArray1(n),
        a2 = newArray2(n),
        a3 = new Array(n);

    p(`newArray1(${n})`);
    for(var prop in a1) {
        p(prop);
    }
    p(`newArray2(${n})`);
    for(var prop in a2) {
        p(prop);
    }
    p(`new Array(${n})`);
    for(var prop in a3) {
        p(prop);
    }
};

inputs.forEach((input) => input.onchange = output);
btn0.onclick = output;
btn1.onclick = () => pre0.textContent = '';
output();















						

0 コメント:

コメントを投稿