zoukankan      html  css  js  c++  java
  • 原型和原型链的理解和使用

    1、对象字面量是一个 名/值 对列表,每个 名/值 对之间用逗号分隔,最后用一个大括号括起来。名/值对 表示对象的一个属性或方法,名和值之间用冒号分隔。

    /**
    * @author zhanghua
    */
    var literal = {
        add: function(){
            alert("add");
        },
        del: function(){
            alert("delete");
        },
        update: function(){
            alert("update");
        },
        name: "zhangsan",
        callLiteral: function(){
            // 对于当前字面量对象的调用,要加this关键字
            this.add();
        }
    };

    2、首先为一个对象定义构造函数,为对象的属性赋值。这里面的属性是自定义属性。

    var BaseCalculator = function() {
    this.decimalDigits = 2;
    };

    3、原型使用的两种方式:

    (1) 通过对象字面量给Calculator的prototype属性赋值:

    BaseCalculator.prototype = {
    add: function(x, y) {
    return x + y;
    },
    subtract: function(x, y) {
    return x - y;
    }
    };
    (2)通过立即执行函数为prototype赋值,可以达到方法的私有化:
    BaseCalculator.prototype = function () {
    add = function (x, y) {
    return x + y;
    },

    subtract = function (x, y) {
    return x - y;
    }
    return {
    add: add,
    subtract: subtract
    }
    } ();
    (3) 
    Calculator.prototype = BaseCalculator.prototype;  Calculator的实例只能访问BaseCalculator原型中的方法和属性,不能访问构造函数中的属性。
    Calculator.prototype = new BaseCalculator();      Calculator的实例既能访问BaseCalculator原型中的方法和属性,也能访问构造函数中的属性。
     

    (4)重写原型:在使用第三方JS类库的时候,往往有时候他们定义的原型方法是不能满足我们的需要,但是又离不开这个类库,所以这时候我们就需要重写他们的原型中的一个或者多个属性或function

    Calculator.prototype.subtract = function(x, y, z){return x + z –y;};

    (5) 原型链: 是由子对象对父对象进行多次原型继承形成的链式关系。当调用子对象的某个属性或方法时,javascript会向上遍历原型链,直到找到为止,没有返回undefined。但是注意: 属性在查找的时候是先查找自身的属性,如果没有再查找原型,再没有,再往上走,一直插到Object的原型上。

    (6) hasOwnProperty函数: 是Object.prototype的一个方法,它能够查找一个对象是否包含自定义属性而不是原型链的属性。可以对 for in 进行过滤。 但是注意: 最好使用{}.hasOwnProperty方式先除去

    某个对象中可能包含的对hasOwnProperty属性非法占用。

    以上参考大牛博客:  http://www.cnblogs.com/TomXu/archive/2012/01/05/2305453.html

  • 相关阅读:
    Jenkins运行完Test后,把ngreport生成的测试报告 拷贝到相应的文件夹
    解析xml报classnotfound错误
    配置NGReport 报告中文
    fork()调用使子进程先于父进程被调度
    堆排序
    良序原理
    高速缓冲区初始化
    Python3:输出当前目录所有目录和文件--walk()函数
    Python3:输出当前目录所有文件的第二种方式-walk()函数
    Python3:递归实现输出目录下所有的文件
  • 原文地址:https://www.cnblogs.com/yjtm53/p/5635146.html
Copyright © 2011-2022 走看看