• javascript面向对象与原型浅析1


    1、工厂模式

    ECMAScript 可以通过工厂模式来创建对象:

    //工厂模式
    function createObject(name, age) {
        var obj = new Object();                                    //创建对象
        obj.name = name;                                            //添加属性
        obj.age = age;
        obj.run = function () {                                        //添加方法
            return this.name + this.age + '运行中...';
        };
        return obj;                                                        //返回对象引用
    };
    var obj1 = createObject('Lee', 100);                    //创建第一个对象
    var obj2 = createObject('Jack', 200);                    //创建第二个对象
    //alert(obj1.run());                                                    //打印第一个对象实例的run()方法
    //alert(obj2.run());                                                    //打印第二个对象实例的run()方法
    
    //alert(typeof obj1);
    //alert(typeof obj2);
    alert(obj1 instanceof Object); //true
    alert(obj2 instanceof Object); //true

    通过工厂模式创建的对象,解决了重复实例化问题,但对象识别问题无法解决(所有对象均是Object),因此要想解决对象识别问题,我们采用下面的构造函数。

    2、构造函数

    //构造函数创建
    function Person(name,age){    //所有构造函数对象都是Object
        this.name=name;
        this.age=age;
        this.run=function(){
            return this.name+this.age+"ing...";
        };
    };
    var person1=new Person('zhu1',100);
    var person2=new Person('zhu2',200);
    alert(person1.run());
    alert(person2.run());
    
    alert(person1 instanceof Object); //ture
    alert(typeof person2);                 //Person
    alert(person2 instanceof Person);    // true
    var person3=new Object();
    Person.call(person3,'zhu3',300);//对象冒充,person3是Object类型,冒充Person类型
    alert(person3.run()); 

    构造函数中this:代表当前作用域对象的引用,如果在全局范围this代表window对象,如果在构造函数体内,就代表当前构造函数所声明的对象。

    构造函数方法,及解决了重复实例化问题,有解决了对象识别问题,对比跟工厂方法不同之处可知:

    1.构造函数方法没有显示的创建对象(new Object());

    2.直接将属性和方法值赋值给this;

    3.没有return 语句;

    4.但是使用构造函数创建必须使用new运算符;

  • 相关阅读:
    oracle第四天笔记
    oracle第三天笔记
    oracle第二天笔记
    select min from 连接
    decode 函数用法
    服务器
    婚姻
    黑马2018年JavaEE课程大纲
    Kubernetes本地私有仓库配置
    ELK系统分析nginx日志
  • 原文地址:https://www.cnblogs.com/1017283242zhu/p/4517056.html
Copyright © 2020-2023  润新知