zoukankan      html  css  js  c++  java
  • javascript 封装 构造函数继承 非构造函数继承

    1 封装   

    把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象

     1.1 简单封装:var cat1 = {}; // 创建一个空对象

        cat1.name = "大毛"; // 按照原型对象的属性赋值

        cat1.color = "黄色";

       1.2 构造函数Prototype模式

    Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。

    这意味着,我们可以把那些不变的属性和方法,直接定义在prototype对象上。

    function Cat(name,color){

        this.name = name;

        this.color = color;

      }

      Cat.prototype.type = "猫科动物";

      Cat.prototype.eat = function(){alert("吃老鼠")};

    生成实例 var cat1 = new Cat("大毛","黄色");

    2 构造函数继承

        2.1 利用空对象继承:

    function extend(Child, Parent) {

        var F = function(){};

        F.prototype = Parent.prototype;

        Child.prototype = new F();

        Child.prototype.constructor = Child;

        Child.uber = Parent.prototype;

      }

        2.1 拷贝继承

    function extend2(Child, Parent) {

        var p = Parent.prototype;

        var c = Child.prototype;

        for (var i in p) {

          c[i] = p[i];

          }

        c.uber = p;

      }

    3 非构造函数继承 (两个普通对象)

         3.1 object()方法

    function object(Father) {

        function F() {}

        F.prototype = Father;

        return new F();

      }

    使用: var Doctor = object(Chinese);//中国医生的例子

    然后加上对象本生 Doctor.career = '医生';

       3.2浅拷贝

    function extendCopy(p) {

        var c = {};

        for (var i in p) { 
          c[i] = p[i];
        }

        c.uber = p;

        return c;
      }

    使用: var Doctor = extendCopy(Chinese);

       3.3 深拷贝

    function deepCopy(p, c) {

        var c = c || {};

        for (var i in p) {

          if (typeof p[i] === 'object') {

            c[i] = (p[i].constructor === Array) ? [] : {};

            deepCopy(p[i], c[i]);

          } else {

             c[i] = p[i];

          }
        }

        return c;
      }

    使用:var Doctor = deepCopy(Chinese);

  • 相关阅读:
    CentOS 7 配置hadoop(五) 配置sqoop(伪分布)
    CentOS 7 配置hadoop(四) 配置hive(伪分布)
    CentOS 7 配置hadoop(三) 配置hbase(伪分布)
    java高级之NIO
    字符编码与序列化
    java高级之IO流 -2
    java中的值传递和引用传递
    事务相关知识点
    mybatis中批量更新sql语句,trim、foreach标签,varchar定义理解
    java IO流之File类的使用
  • 原文地址:https://www.cnblogs.com/zoumin123/p/5877786.html
Copyright © 2011-2022 走看看