美文网首页
JavaScript中对象的构造模式(类的模仿)

JavaScript中对象的构造模式(类的模仿)

作者: 没个性的七秒鱼 | 来源:发表于2016-09-30 13:30 被阅读0次

为什么叫类的模仿,因为JS中没有类的概念,也就是没有class这个东东,毕竟是为了赶时髦才加上java这个词的,跟java可是一点关系没有,也没有java中典型的class的概念,但是作为一门强大的脚本语言如何去面向对象呢,那就是利用构造函数模仿类的功能

1、工厂模式创建对象

这是最原始的创建对象的方法,原理也很简单,就是封装了一个返回值为对象的函数

function createObject(name,age){
    var o = new Object();
    o.name = name;
    o.age = age;
    o.sayName = function(){
        alert(this.name);
    }
    return o;
}
var person1 = createObject('小明','18');
person1.sayName();
var person2 = createObject('小红','17');
person2.sayName();

这样就能通过函数createObject不断的创建对象了,但是,我们想模仿的是类的概念,但是这里所创建的每一个对象都没有办法识别是什么类型,看下面代码:

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

这里创建出来的变量person1和person2都是Object类型的,并不符合面向对象里面的'分类'的概念,比如我想让创建出来的对象都属于一个范畴的,就拿这里的person1和person2来说,这两个对象应该都属于人的范围,应该有一个代表人的类型来专门给他们分类,为了解决这个问题,就有了第二种方法:

2、构造函数创建对象

通过一个构造函数来创建对象

function person(name,age){
    this.name = name;
    this.age = age;
    this.sayName = function(){
        alert(this.name);
    }
}
person1 = new person('小明',18);
person2 = new person('小红',17);
person1.sayName();   //小明
person2.sayName();   //小红

这种方法很好的解决了对象识别的问题,如下代码:

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

会发现person1和person2不仅是object类型的实例,还都是person类型的实例
构造函数方法创建对象能够满足最基本“类的模仿”,但严格来说还有很多问题,比如这里用构造函数每创建一个对象就要单独开辟一块内存空间,但实际上对象里的很多属性常常是可以共用的,比如说这里的sayName方法,每个对象里都有这个方法,为什么不在内存空间里只开辟一块地方存它,然后让所有对象都从这块地方调用它呢,为了实现这个原理,就有了原型的使用。

3、JS中的原型

未完待续~

相关文章

  • JavaScript中对象的构造模式(类的模仿)

    为什么叫类的模仿,因为JS中没有类的概念,也就是没有class这个东东,毕竟是为了赶时髦才加上java这个词的,跟...

  • 前端高频面试题之——原型链

    JavaScript中的构造函数 原型是什么 面向对象语言中,类派生实例,JavaScript的函数可以作为构造器...

  • JavaScript中创建对象的几种方式

    在《JavaScript高级程序设计》中,介绍了创建对象的7种方式,分别是:工厂模式、构造函数模式、原型模式、构造...

  • JavaScript创建对象

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

  • JavaScript创建对象之原型模式

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

  • JavaScript创建对象的高级方法

    创建对象的方法 读《JavaScript高级程序设计》所得。 工厂模式——》构造函数模式——》原型模式——》构造函...

  • 08-JavaScript面向对象

    创建对象 JavaScript中如何创建对象 通过默认的Object这个类(构造函数)来创建 通过字面量来创建对象...

  • Day06 JavaScript面向对象

    面向对象OOP JavaScript中的object类1、直接使用变量定义object对象 2、使用构造函数来创建...

  • 《javaScript模式》--设计模式

    javaScript常用模式9种 迭代器模式 观察者模式 总结 单体模式针对一个'类'创建一个对象.如果您想以构造...

  • 构造函数和原型对象

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

网友评论

      本文标题:JavaScript中对象的构造模式(类的模仿)

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