JavaScript 面向对象-设计模式
new 做了什么?
- 函数开始隐式创建了一个空对象 ----> new Object() = {}
- 将函数中的 this 指向空对象,在该对象上添加属性和方法 ----> this = {}
- 将该对象的 proto 指向函数的 prototype
- 隐式的返回this
字面量创建
js
var obj = {}
实例化创建
js
var obj = new Object();
工厂模式
js
function create(name){
var obj = {};
obj.name = name;
return name;
}
var obj = create('xiaoming');
构造函数创建
js
function Person(name){
this.name = name;
}
var person = new Person('小明');
原型创建
js
function Person(){}
Person.prototype.fn = function(){
console.log('共享');
}
var person = new Person();
混合创建
js
function Person(name){
this.name = name;
}
Person.prototype.eat = function(){
console.log('混合创建');
}
var person = new Person('xiaowan');
动态混合创建
js
function Person(name){
this.name = name;
if(typeof this.eat == 'function'){
Person.prototype.ear = function(){
console.log('混合创建');
}
}
}
var person = new Person('xiaoming');