什么是 Javascript 的公有属性 / 方法,私有属性 / 方法,静态属性 / 方法,共享属性 / 方法?
公有 是指,在外部环境中可以获取的,可以直接通过实例对象用”.”运算符操作获得。(在构造函数中用 this 进行声明)
私有 是指,在外部环境中不能直接访问,该属性 / 方法只能在对象的构造函数内访问。(声明在构造函数里的变量和方法,没有用到 this)
静态 是指,属性 / 方法是归属于类的,而非实例对象。可以直接通过类名来调用得到。
共享 是指,实例对象之间,共享属性和方法,借助向原型对象添加属性和方法,可以实现。
(虽然都有“公共”的含义,但是可以看出静态的和共享的之间的区别了吧)
为什么把方法写在 prototype 中而不写在构造函数中
参考:https://blog.csdn.net/FJ20100…
因为写在构造函数中更消耗内存。写在构造函数中的话,每次用构造函数 new 一个对象的话,都会创建一份新的属性和方法存到内存中。而写在原型对象中就没有这个问题,对于这个类,只有一个原型对象,因此写在原型对象之下的方法也不会多次复制,永远只有一份。
(如果写在原型对象中,多个实例调用这个方法,会有什么问题吗?比如对同一个对象进行操作?)验证方法 方法用 == 进行比较,即内存地址的比较