zoukankan      html  css  js  c++  java
  • js里的原型

        <script type="text/javascript">
            function People(name){
                this.name = name;
                //对象方法
                this.introduce = function(){
                    alert("My name is "+this.name)
                }
            }
            //类方法
            People.run = function(){
                alert("I can run");
            }
            //原型方法
            People.prototype.introduceChinese = function(){
                // alert("我的名字是"+this.name);
                this.introduce();
            }
    
            var p1 = new People("WindKing");
            // p1.introduce();
            People.run();
            p1.introduceChinese();
    
    // javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。
    
    // A.prototype = new B();
    
    // 理解prototype不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的是克隆而不是继承。可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例
    
            function baseClass(){
                this.showMsg = function(){
                    alert("baseClass::showMsg")
                }
            }
            baseClass.prototype.showMsg2 = function(){
                alert("baseClass::showMsg2")
            }
            function extendClass(){}
            extendClass.prototype = new baseClass();
            var instance = new extendClass();
            instance.showMsg();
            instance.showMsg2();
        </script>

     原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。

    javascript的方法可以分为三类:a 类方法 b 对象方法 c 原型方法

    1、对象方法理解就很简单了,主要是如果类生成一个实例,那么该实例就能使用该方法
    2、类方法,不需要通过生成实例就可以使用的方法
    3、原型方法主要是用来对JS已有的系统对象进行扩展而生的,例如Array数组没有什么方法,你可以为其增加原型方法,那么创建的数组就拥有了该方法。

    1、对象方法包括构造函数中的方法以及构造函数原型上面的方法;
    2、类方法,其实这里的类就是一个函数,在js中由于函数也是一个对象,所以可以为函数添加属性以及方法,这种方法在node中用的比较多;
    3、原型方法一般用于对象实例共享,比如Person.prototype.sayName=function(){console.log(this.name);};在原型上面添加该方法,就能实现共享。这样就不用每一次初始化一个实例的时候,为其分配相应的内存了。

    用java中类的方法思维去考虑的话,楼主说的“类方法”指的是“静态方法”,而“原型方法”则指的是“实例方法”,静态方法不可以被继承,也不能被重写,类加载时便加载了;而实例方法,则在实例化后加载。如果一个方法经常被调用,并且与自身的对象没有什么关系,就用静态方法;如果一个方法在必然使用它的情况下才需要调用,就用实例方法。

    javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。

    A.prototype = new B();

    理解prototype不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的是克隆而不是继承。可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例。

  • 相关阅读:
    [原创]益盟软件测试流程培训
    一图教你如何管理自己的时间
    [原创]质量控制思维导图
    [原创]常用Web服务器日志工具介绍
    [原创]常见的测试类型思维导图
    [原创]软件项目研发控制流程(草稿)
    [原创]Top 15 free SQL Injection Scanners
    [原创]2010年12月测试团队培训表
    [原创]Firefox Throttle 网络带宽限速工具介绍
    [原创]对5W1H分析法应用到工作中的理解
  • 原文地址:https://www.cnblogs.com/as3lib/p/5120752.html
Copyright © 2011-2022 走看看