• 使用 prototype 定义方法和属性


    除了可以在类的构造器方法中定义方法和属性外,也可以使用 prototype 定义方法和属性。每个类都有这个属性,该属性是一个静态属性,因此无需实例化,只需使用类引用该属性即可。

    1.1 使用 prototype 定义方法:

    function Person(myName,myAge){

    this.nickName = myName;

    this.age = myAge;

    }

    Person.prototype.showInfo = function(){

    return("hi"+this.nickName+"我现在"+this.age+"岁了。");

    };

    1.2 使用 prototype 定义属性:

    function showHistory(){

    return "10年开发体验";

    }

    Person. prototype.showHistory = showHistory;

    var person_1 = new Person("xiaowu","28");

    alert(person_1.showHistory()) //弹出10年开发体验

    1.3 关于 prototype 和 _proto_ 属性

    每个构造器都有一个 prototype 属性,该属性在定义构造器方法时自动创建的。 prototype 属性代表用该函数创建的类的默认属性值。

    如果将方法分配给类的 prototype 属性,则该类的任何新创的实例都可以使用这些方法。

    类的每个新实例也都有一个 _proto_ 属性,用于引用创建它的构造器方法的 prototype 属性。

    可以使用 prototype 和 _proto_ 属性扩展类,这样可以以面向对象的方式重新使用代码。

    person_1._proto_.showHistory = showHistory;

    tip:最好将方法分配给构造器方法的 prototype 属性,因为它只存在于一个位置,并且由该类的新实例引用。_proto_ 属性最终还是要经过对 prototype 属性的引用才能实现其功能。

    并且,IE不支持 _proto_ 属性。所以不建议使用

  • 相关阅读:
    codevs 3160 最长公共子串(SAM)
    noi2018d2t1
    后缀自动机
    [Scoi2014]方伯伯的玉米田
    【NOI2017】泳池
    【BZOJ2560】串珠子
    POJ 1737 统计有n个顶点的连通图有多少个 (带标号)
    【BZOJ3590】[Snoi2013]Quare 状压DP
    【BZOJ1095】【ZJOI2007】捉迷藏 [动态点分治]
    BZOJ1316: 树上的询问
  • 原文地址:https://www.cnblogs.com/chengmingxiaowu/p/7686595.html
Copyright © 2020-2023  润新知