创建对象
1. 工厂模式
1 | function createShape(x, func) { |
无法进行对象识别(识别对象的类型)
2. 构造函数模式
1 | function Shape(x, func) { |
经历的步骤:
1) 创建一个新对象
2) 将构造函数的作用域赋给新对象(this指向这个新对象)
3) 执行构造函数中代码。
4) 返回新对象。
特点:每个构造函数都实例化了一个新的对象。不同实例的同名方法是不相等的。
alert(a.func == b.func); // false
可解决方案:将方法func提出到外部作用域,然后this.func = func;
。但是却使得自定义类失去封装性。