eloquentjavascript阅读2 | 青训营笔记

73 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第15天。

数据结构:对象和数组:数据集,属性,方法,对象,Object.keys返回键的数组,Object.assign复制属性,变化性,赋值和传递,给一个对象一个值,这是独立的,而把A传递给B,就是简单的A=B,这样A变,B也变,矩阵,字符串和属性,数学对象。

高阶函数:抽象,比如做饭3次是一个函数,那做某件事3次范围大了,那重复做某事n次范围又大了,关于map,过滤数组,通过数组的值相加减少数组,字符串和字符编码,识别文本。

对象生命周期:介绍了面向对象,封装,然后兔子对象的speak函数,还有一种表达方式speak.call(hungryRabbit, “Burp!”);本来对象调用方法,现在可以用函数直接调用对象这样,普通函数不能用this,箭头函数能用this,原型,祖先模型Object.prototype.你可以使用Object.create来创建一个具有特定原型的对象。

  speak(line) {
    console.log(`The ${this.type} rabbit says '${line}'`);
  }
};
let killerRabbit = Object.create(protoRabbit);
killerRabbit.type = "killer";
killerRabbit.speak("SKREEEE!");
// → The killer rabbit says 'SKREEEE!'

重构,map,map的键可以是对象,同时对象有自己的原型属性,为了不让对象有原型属性,可以create一个null,然后给他设置属性,Object.keys可以忽略原型只看自己的属性,同时hasOwnProperty也是判断自己有没有而不是原型,多态性,这是不是就是java的封装,继承,多态?多态就是表示你可以重写方法,类型,String调用的是对象的toString,你可以自己写,符号,符号可以作为一个属性名称,定义一个变量,可以用字符串作为值新建,比如:

Array.prototype[toStringSymbol] = function() {
  return `${this.length} cm of blue yarn`;
};

console.log([1, 2].toString());
// → 1,2
console.log([1, 2][toStringSymbol]());
// → 2 cm of blue yarn