• 面向对象与原型(一)


     一、创建对象

    var box = new Object();        //创建一个Object对象
    box.name = 'Lee';               //创建一个name属性并赋值
    box.age = 100;                   //创建一个age属性并赋值
    box.run = function(){
          return this.name + this.age+'运行中....';   
    }

    var box2 = box;                           //得到box的引用  此时box2和box引用的是同一个地址里的对象
    box2.name = 'Jack';                       //直接改变了box对象里的name属性
    alert(box2.run());                        // Jack100运行中...

    上面创建了一个对象,这种是JavaScript创建对象最基本的方法,但有个缺点,想创建一个类似的对象会产生大量的代码。

    var box2 = new Object();                  //重新创建一个Object对象
    box2.name = 'Lee';                        //创建一个name属性并赋值
    box2.age = 100;                           //创建一个age属性并赋值
    box2.run = function(){
          return this.name + this.age+'运行中....';   
    }
    alert(box2.run());                           //这样才和box区分开来。并且独立

    二、工厂模式

    funciton createObject(name,age){            //集中实例化的函数
      var obj = new Object();   
      obj.nane = name;
      obj.age = age;
      obj.run = function(){
        return this.name + this.age+'运行中....'; 
      };
      
      return obj;        //返回对象              
          
    }
    
    
    var box1 = createObject('Lee',100);          //第一个实例
    var box2 = createObject('Howie',200);        //第二个实例
    
    //两个实例都是独立的

    缺点:识别问题,无法搞清楚他们是那个对象的实例。对象都是Object。

    alert(typeof box1);                                  //object
    alert(box1 instanceof Object);                       //ture

    三、构造函数

    ECMAScript中可以采用构造函数(构造方法)可用来创建特定的对象。类型于Object对象

    function Box(name,age){                              //创建一个对象,所有构造函数的对象其实都是Object
      this.name = name;
      this.age = age;
      this.run = function(){
        return this.name + this.age + '运行中..';
      };
    }
    var box1 = new Box('Jack',200);                     
    
    alert(box1 instanceof Object);                      //true
    alert(box1 instanceof Box);                          //true 清晰的识别box1实例的对象为Box

    使用了构造函数的方法,和使用工厂模式的方法他们不同之处如下:

    1.构造函数方法没有显示的创建对象(new Object());
    2.直接将属性和方法赋值给this 对象;
    3.没有renturn 语句。

     

    构造函数的方法有一些规范:

    1.函数名和实例化构造名相同且大写,(PS:非强制,但这么写有助于区分构造函数和普通函数);
    2.通过构造函数创建对象,必须使用new 运算符。

      

    关于this的使用,this其实是代表当前作用域的对象的引用。

    如果是全局范围this就代表window对象,如果在构造函数体内,就代表当前构造函数所申明的对象。

  • 相关阅读:
    Wpf 数据绑定实例2
    Wpf 数据绑定简介、实例1
    Wpf ListBox数据绑定实例1--绑定字典集合
    Wpf控件ListBox使用实例2
    阿里UX矢量图标库–最强大的矢量图标库(Icon font制作力荐工具)
    Web字体工具整理,网页图标字体以及使用方法整理
    ICOMOON!强悍的WEB字体图标制造器/Web字体使用实例
    window.applicationCache事件,介绍
    HTML5 离线缓存忽略主页实例
    条件注释判断浏览器版本<!--[if lt IE 9]>(转载)
  • 原文地址:https://www.cnblogs.com/hynb/p/5824336.html
Copyright © 2020-2023  润新知