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的实例。

  • 相关阅读:
    Treap 树堆 容易实现的平衡树
    (转)Maven实战(二)构建简单Maven项目
    (转)Maven实战(一)安装与配置
    根据请求头跳转判断Android&iOS
    (转)苹果消息推送服务器 php 证书生成
    (转)How to renew your Apple Push Notification Push SSL Certificate
    (转)How to build an Apple Push Notification provider server (tutorial)
    (转)pem, cer, p12 and the pains of iOS Push Notifications encryption
    (转)Apple Push Notification Services in iOS 6 Tutorial: Part 2/2
    (转)Apple Push Notification Services in iOS 6 Tutorial: Part 1/2
  • 原文地址:https://www.cnblogs.com/as3lib/p/5120752.html
Copyright © 2011-2022 走看看