このページで実行済みのコード

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"]