zoukankan      html  css  js  c++  java
  • 面向对象篇(三)

    如果我们想再创建一个面向对象的程序呢?

    var obj = new Object();   //创建一个空白对象
    obj.name = '张三’;   //属性
    obj.showName = function(){   //方法
         alert(this.name);  
    }
    obj.showName();      //张三
    
    
    var obj2 = new Object();   //创建一个空白对象
    obj2.name = '李四’;   //属性
    obj2.showName = function(){   //方法
         alert(this.name);  
    }
    obj2.showName();      //李四

    创建是创建好了,但是我们可以看到有很多重复的代码,按照我们平时的做法,这时候怎么办呢?封装成一个函数呗,对,就这么干

    function createPerson(name){
       var obj = new Object();
       obj.name = name;
       obj.showName = function(){
            alert(this.name);
       }
        return obj;
    }
    var p1 = createPerson('张三');
    p1.showName();    //张三
    
    var p2 = createPerson('李四');
    p2.showName();    //李四

    我们把面向对象的封装函数叫做工厂方式,其实就是封装函数,只不过是起了一个文雅的名字,它为什么叫工厂方式,因为它的步骤特别像一个工厂的流水线

    function createPerson(name){
        //原料
       var obj = new Object();
       //加工
       obj.name = name;
       obj.showName = function(){
            alert(this.name);
       }
        //出厂
        return obj;
    }
    var p1 = createPerson('张三');   
    p1.showName(); //张三 

    var p2 = createPerson('李四');
    p2.showName();
    //李四

    是不是还挺形象的,哈哈哈

    但是,到现在为止,它还是和我们的系统对象有些差别的,我们来看一个系统对象

    var arr = new Array();

    差别1:我们的构造函数首字母没有大写

    差别2:我们写的程序没有new关键字

    我们首先改首字母的大写,这个好改

    function CreatePerson(name){
        //原料
       var obj = new Object();
       //加工
       obj.name = name;
       obj.showName = function(){
            alert(this.name);
       }
        //出厂
        return obj;
    }
    var p1 = CreatePerson('张三');   
    p1.showName(); //张三 
    
    var p2 = CreatePerson('李四'); 
    p2.showName(); //李四

    在来看这个new,加上new之后,构造函数中的this指向就变了,由原来的window变成了创建出来的对象,在这个例子中,this就指的是obj,而且函数的返回值就是this了

    function CreatePerson(name){
       this.name = name;
       this.showName = function(){
            alert(this.name);
       }
    }
    var p1 =new CreatePerson('张三');   
    p1.showName(); //张三 
    
    var p2 =new CreatePerson('李四'); 
    p2.showName(); //李四

    其中的createPerson被我们称之为构造函数,是因为它是来创建对象的,所以称之为构造函数。

  • 相关阅读:
    小程序动态添加input(一)
    vue样式穿透
    小程序判断用户是否授权位置信息
    【超详细】MySQL学习笔记汇总(四)之排序查询
    【超详细】MySQL学习笔记汇总(三)之进阶1、2测试
    【超详细】MySQL学习笔记汇总(二)之条件查询
    【超详细】MySQL学习笔记汇总(一)之基础查询
    【超详细】MakeDown(Typora)+PicGo+Gitee实现图床
    JavaDOC生成文档
    学习Hive遇到的问题
  • 原文地址:https://www.cnblogs.com/chenzhiyu/p/7900539.html
Copyright © 2011-2022 走看看