「JavaScriptの理解を深めた人がさらにもう一歩先に進むための本」途中 その3

Chapter 6 まで。


iteratorの展開がRubyっぽいと思った。

let arr1 = ['a', 'b', 'c'];
let arr2 = [1, 2, 3];
console.log([...arr1, ...arr2]); // => [ 'a', 'b', 'c', 1, 2, 3 ]

let str1 = 'abc';
let str2 = 'zzz';
console.log([...str1, ...str2]); // => [ 'a', 'b', 'c', 'z', 'z', 'z' ]

console.log(Math.min([1, 2, 3, 4])); // => NaN
console.log(Math.min(...[1, 2, 3, 4])); // => 1

関数の巻き上げは関数式では行われないのは、分かり易さの点からも良いと思う。

安全なコンストラクタはなるほどな、と思うけどやり過ぎかな。

function Phone(name) {
  if (this instanceof Phone) {
    this.name = name;
  } else {
    return new Phone(name);
  }
}

ゲッタとセッタの実体隠し、なるほどな、とは思うけどやり過ぎかなパート2。

let human = (function() {
  let _name;

  return {
    get name() {
      return `名前は ${_name} です`;
    },
    set name(val) {
      _name = val;
    }
  };
})();

human.name = 'igarashi';
console.log(human.name); // => 名前は igarashi です
console.log(human._name); // => undefined