zoukankan      html  css  js  c++  java
  • js:面向对象编程

    ----- javasrcipt中没有类的概念,面向对象的一切都需操作对象。

    ----- js中所有的对象都是就Object延伸而来。

    一,以下是创建对象的几种方法

    1,使用Object定义对像的属性与方法

    这种方法操作对像的缺点在于,如果要生成多个需要使用同样的语法创建对象

    有以下几种方式:

    var obj=new Object();
    obj.username="zxd";
    obj.password="123";
    obj.test=function(){
                 alert(this.username+""+this.password);          
    }
    var obj=new Object();
    obj["username"]="张三";
    obj["password"]="123";
    obj["test"]=function(){};
    var obj={
    username:"张三",
    password:"123",
    test":function(){
         }
    };

    2,通过工厂方式配合单独函数创建对象

    这种方式定义解决了之前的所有问题,但是这种创建对象的方式使得在创建对象的过程中函数与属性分开了,使得代码不太好管理。

    function test(){
              alert(this.username+""+this.password);  
    }
    function createObj(username,password){
               var obj=new Object();
               obj.username=username;
               obj.password=password;
               obj.test=test;
               return obj;  
    }
    var obj=createObj("abc","abc");
          obj.test();

    3,构造函数的方式创建对象

    通过构造函数的方式创建对象,的优点在于不在需要Object,也不需要reutrn返回,实际上构造函数的方式创建对象,在函数中会隐含一个return来返回对象。

    缺点:但是使用构造函数创建对象与之前工厂模式一样,也存在着重复创建函数的问题,当然也可以像之前一样把函数定义在外部。

    function person(username,password){
            this.username=username;
            this.password=password;
            this.get=function(){
                    alert(this.username+""+this.password);
            }  
    }
    var obj1=new person("asd","123");
    var obj2=new person("dsa","353");
    
    obj.get();
    obj.get();

    4,原型方式创建对象

    function person(){
    
    }
    person.prototype.username=new Array("aad","ada");
    person.prototype.passwrod="123";
    person.priototype.test=function(){
        alert(this.username+""+this.password);
    }
    var obj1=new person();
    var obj2=new person();
    obj1.username.push("three");
    obj1.test();
    obj2.test();

    5,构造函数与原型混合使用创建对象

    这种方式解决了构造函数与原型方式的不足,是比较理想的一种创建对象的方式。

    function person(username,pasword){
          this.uername=username;
          this.password=password;
      
    }
    person.prototype.get=function(){
          alert(this.username+""+this.password);
    }
    var obj1=new person("aa","232");
    var obj2=new person("ddd","343");
    obj1.get();
    obj2.get();
  • 相关阅读:
    CentOS 8配置神奇的自动挂载光驱文件夹misc
    Linux预定义通配符及实例
    history历史记录增加显示时间和用户
    CentOS 8 命令行更改系统语言
    使用screen实现多终端同步显示
    在MobaXtrem使用CentOS 上的图形工具
    CentOS中id前10的用户
    添加硬盘后不重启使系统识别新硬盘
    bash默认启用的内部命令
    九、分页查询
  • 原文地址:https://www.cnblogs.com/dybe/p/8075867.html
Copyright © 2011-2022 走看看