核心提示:创造对象:1、工厂模式,优:减少重复代码,缺:没办法判断对象类型。2、构造函数constructor每个对象都有构造函数属性与工厂模式区别1、没有显示创建对象2、属性方法赋值给this3、无retur...
创造对象:1、工厂模式,优:减少重复代码,缺:没办法判断对象类型。
2、构造函数
constructor – 每个对象都有构造函数属性
与工厂模式区别
1、没有显示创建对象
2、属性方法赋值给this
3、无return
都是new做的事。
优缺点
缺:
1、每个方法在每个实例上都要重新创建一遍。不同实例上的同名函数实际上是不同的。
2、优化后的全局函数只能被某个对象调用。
3、原型模式
prototype – 每个函数都有的原型属性
实例共享属性和方法
Parent.prototype.isPrototypeof(son1); Object.getPrototype(son1); son1.hasOwnProperty('name');// in
是否可枚举:Object.getOwnPropertyNames()/Object.keys();// 都在实例上 是否在原型上:in/son1.hasOwnProperty('name');
重写原型链
var Parent = function (){}; var p1 = new Parent(); Parent.prototype = { } var P2 = new Parent(); p1 instanceof Parent; // false p2 instanceof Parent; // true
最新原型对象
之前原型对象
constructor属性,以及该属性的[[enumerable]]特性
可在原生对象原型中使用
优缺点
缺点:共享属性中引用类型不方便。