Skip to content
此页目录
本文总阅读量

JavaScript 面向对象-设计模式

new 做了什么?

  1. 函数开始隐式创建了一个空对象 ----> new Object() = {}
  2. 将函数中的 this 指向空对象,在该对象上添加属性和方法 ----> this = {}
  3. 将该对象的 proto 指向函数的 prototype
  4. 隐式的返回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');

评论

交流群