美文网首页
javascript中面向对象编程-创建对象之工厂模式和构造函数

javascript中面向对象编程-创建对象之工厂模式和构造函数

作者: 箱猫日和 | 来源:发表于2016-05-30 23:52 被阅读33次
面向对象.png

创建对象

问题:
  1. 什么是构造函数?
  2. 构造函数与普通函数区别是什么?
  3. 使用new关键字时发生了什么?
  4. 构造函数中有返回值怎么办?
  5. 构造函数能当普通函数调用吗?

一、工厂模式(抽象了创建具体对象的过程)--用函数来封装以特定接口创建对象细节

function createPerson(name, age, job){
var o = new Object();
o.name = name;
o.age = age;
o.job = function(){
alert(this.name);
};
return o;
}

var person1 = createPerson("shan", 22, "SoftWare Engineer");
var person2 = createPerson("fan", 23, "SoftWare Engineer");

alert(person1 instanceof Object); //true
alert(person2 instanceof Object); //true

构造函数(“构造”为需要的样子)特征:
  1. 函数体内部使用了this关键字,代表了所要生成的对象实例。
  2. 生成对象的时候,必需用new命令

二、构造函数模式-字面量创建对象

var Person = function(name ,age, job){
this.name = name;
this.age = age;
this.job = function(){
alert(this.name);
};
}

var person1 = new Person("shan", 22, "SoftWare Engineer");
var person2 = new Person("fan", 22, "SoftWare Engineer");

alert(person1 instanceof Object); //true
alert(person1 instanceof Person); //true
alert(person2 instanceof Object); //true
alert(person2 instanceof Person); //true
//person1,person2同时是Object实例,因所有对象均继承自Object

构造函数当作普通函数使用

Person("shan", 22, "SoftWare Engineer"); //此时函数中this指向全局,即window。
window.job(); //"shan"

在另一个对象的作用域中调用

var o = new Object();
Person.call(o,"shan", 22, "SoftWare Engineer"); //固定this方法:call,apply,bind
o.job(); //"shan"

new过程时发生了什么?
  1. 创建一个新对象
  2. 将构造函数的作用域赋值给新对象
  3. 执行构造函数的代码(即为新对象添加属性)
  4. 返回新对象
构造函数模式与工厂模式区别:

创建自定义构造函数,意味着可以将它的实例标识为一种特定类型,即胜过工厂模式的地方

构造函数问题:

以上构造函数实例中,函数内部job(),实例化person1和person2时,是不同的实例,这样每实例化一次,每个方法都在实例上重新创建一遍。

相关文章

  • javascript面向对象与原型

    昨天我们讲了在面向对象中创建对象的几种方式 工厂模式 构造函数模式 工厂模式创建的对象,像工厂一样来创建对象,创建...

  • 构造函数和原型对象

    javascript使用构造函数和原型对象来进行面向对象编程 构造函数 在 JavaScript 中,构造器其实就...

  • JavaScript创建对象之原型模式

    一、原型基础 在之前的文章:《JavaScript创建对象之单例、工厂、构造函数模式》中详细介绍了构造函数模式创建...

  • JavaScript构造函数

    在JavaScript编程中,构造函数是面向对象编程的基础。创建构造函数和普通函数一样,也是使用function关...

  • 对象的创建与继承

    创建对象 工厂模式 => 构造函数模式 => 原型对象模式 => 构造函数模式+原型对象模式 工厂模式 构造函数模...

  • javascript中面向对象编程-创建对象之工厂模式和构造函数

    创建对象 问题: 什么是构造函数? 构造函数与普通函数区别是什么? 使用new关键字时发生了什么? 构造函数中有返...

  • JavaScript创建对象

    JavaScript中创建对象有以下七种方式: 工厂模式构造函数模式原型模式构造函数和原型组合模式动态原型模式寄生...

  • JavaScript 面向对象编程

    JavaScript 快速入门 面向对象编程创建对象构造函数忘记写new怎么办?原型继承class继承 面向对象编...

  • 链式操作

    对象字面量创建对象 构造函数创建对象 构造函数和原型一起创建对象 参考 JavaScript设计模式 --- 方法...

  • 2020-12-15

    js对象的创建和函数 创建对象 工厂模式 构造函数 原型方式+构造函数

网友评论

      本文标题:javascript中面向对象编程-创建对象之工厂模式和构造函数

      本文链接:https://www.haomeiwen.com/subject/iujcdttx.html