このページで実行済みのコード
var arr = [1, 2, 3, 4, 5]; Object.defineProperty(arr, 'len', { // getterの設定 get: function() { return arr.length; }, // setterの設定 set: function(num) { // バリデーション if (typeof num !== 'number') { throw new RangeError('Invalid array length'); } // lenへの代入で配列を更新 arr.splice(num, arr.length); }, // "len"を列挙させない enumerable: false });
開発コンソールで以下のコードを順番に実行して結果を確認してみてください
> arr; [1, 2, 3, 4, 5] > arr.len; 5 > arr.len = 'foo'; RangeError: Invalid array length > arr.len = 3; 3 > arr; [1, 2, 3] > Object.keys(arr); ["0", "1", "2"]