目标:2019年结束前可以自己上手写出一个完整项目.
计划:目前先学完《尚硅谷JavaScript》140P,抽空多看HTML&CSS,之后再计划别的.
习惯:每天至少可以学1P.
2019-11-05
《尚硅谷JavaScript》学习笔记
P65(构造函数优化)、P66(原型prototype对象概念)
一、构造函数优化
-创建构造函数时,将【方法】写在了构造函数内部,即为构造函数每执行一次,都会创建一个新的方法,即为该类创建的每个实例中,都拥有唯一的在函数内部创建的方法。
-如果该方法为通用方法,就不用直接写在构造函数内部,函数每执行一次,该方法就创建一次,会占用巨大的内存空间,可将其共享。
-方法1:可直接将该方法写在全局作用域中(只执行一次):
function fun()={
//函数体
}
再将该函数赋值给构造函数中的this.method(方法)。
将函数定义在全局作用域中,有局限性,容易出问题。一污染全局作用域的命名空间,二在多人共同开发下可能重名且不安全。
二、原型(prototype)
-在创建任意函数后,解析器都向函数中添加一个属性:prototype。
-每一个函数的prototype都为唯一的
console.log(MyClass.prototype == Person.prototype);
执行结果false。
-当 函数为普通函数调用时,prototype无用。
-当 函数通过构造函数调用时,该类所创建的对象(mc)都会有一个隐含的属性,指向该类的原型对象。
可是使用【prototype】访问该隐含属性。
console.log(MyClass.prototype == mc.prototype);
执行结果为true
二、原型对象
-原型对象为一个公共区域,所有同一个类的实例都可以访问到原型对象。
-可将对象中共有的内容,统一设置在原型对象中进行共享。
-当我们访问对象的属性、方法时,会先在对象自身中寻址,如果有直接使用,没有则进原型对象中寻找。
-创建构造函数时,可将对象中共有的属性、方法添加到构造函数的prototype对象中,不用再分别添加,也不再影响全局作用域,就可以让每一个对象都能具有同一属性、方法。
-在对象里添加的属性、方法会覆盖到原型对象中的属性、方法。
——————————————2019-11-05-23:15—————————————