zoukankan      html  css  js  c++  java
  • js(3)面向对象的程序设计

    面向对象(OO)语言都有一个标志,就是都有类的概念,而通过类可以创建多个具有相同属性和方法的对象

    一:进行创建对象

    1,工厂模式:

    工厂模式是使用函数来封装特定接口的创建对象胡细节,代码如下:

    function  createPerson(name,age,job){
         var  o=new Object();
         o.name=name;
         o.age=age;
         o.job=job;
         o.sayName=function(){
         alert(this.name)  
          } 
         return o 
    }
    var Person1=createPerson("zhangningning",21,"doctor")
    

     缺点:没有解决对象识别的问题

    2.构造函数模式:

    通过创建自定义的构造函数,

    代码如下:

    function Person(name,age,job){
         this.name=name;
         this.age=age;
         this.sayname=function(){
                     alert(this.name)  
        }      
    }
    var person1=new  Person("zhangningning",21,"student")    

    使用new操作符的过程:
    (1),创建一个新对象

    (2),将构造函数中的作用域赋给新对象

    (3),执行构造函数中的代码

    (4),返回新对象

    缺点:会导致不同实例上的同名函数是不相同的

    通过构造函数创建的实例中存在一个constructor属性,这个属性指向person

    3,原型模式

    每个函数都有一个原型属性,属性是一个指针,指向一个对象,对象包含由特定类型的所有实例共享的属性和方法

    可以将方法添加到原型中,所有的实例就都会共享

    可以通过对象实例访问保存在原型中的值,不能通对象实例重写原型中的值,如果在实例中添加一个属性,这个属性和原型对象中的属性同名,就会覆盖原型中的属性

    function Person(){
    }
         Person.prototype.name="Nicholas";
         Person.protype.age=29;
         Person.protype.sayname=function(){
    
            alert(this.name)
    }
    var person1=new Person();
    person1.Sayname();//“Nicholas” 

    代码如上:

    我们通过给函数的原型上添加属性和方法,可以实现属性和方法的共享,但是由于我们将属性和方法都定义到了函数原型上,因此所有的实例都会共享原型上的属性和方法,为了解决这个问题,我们通过组合使用构造函数模式和原型模式:

    4,组合使用构造函数模式和原型模式,这是最常用的一种模式

    代码如下:

  • 相关阅读:
    零售定价(最终价格计算)(三)
    SAP数据表(一)商品表
    BizTalk 2006 R2 如何实现EDI报文的接收处理
    Simulate a Windows Service using ASP.NET to run scheduled jobs
    看曾士强评胡雪岩
    Smart Client Software Factory 初试
    Asp.net Dynamic Data之四定义字段的显示/编辑模板和自定义验证逻辑
    To set a 64bit mode IIS installation to 32bit mode
    集中日志查询平台方案(Draft)
    .net开发框架比较
  • 原文地址:https://www.cnblogs.com/qianduangaoshou/p/6835004.html
Copyright © 2011-2022 走看看