zoukankan      html  css  js  c++  java
  • js方法和prototype

    JS中的方法可以分为三类

    1、对象方法

    2、类方法

    3、原型方法

    例:

    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);
    }
    
    //测试
    
    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 A(){
        this.name="lee";
    }
    A.prototype.run=function(){
        return "123"
    }
    function B(){
    }
    
    B.prototype= new A();
    var objB = new B()
    console.log(objB.name)

    B拥有A的所有属性和方法。

    但是如果B有和A同样的方法

    function A(){
        this.name="lee";
    }
    A.prototype.run=function(){
        return this.name;
    }
    function B(){
        this.name="JACK";
    }
    B.prototype.run=function(){
        return this.name;
    }
    B.prototype= new A();
    var objB = new B()
    console.log(objB.run())

    结果是 :JACK

    函数运行时会先去本体的函数中去找,如果找到则运行,找不到则去prototype中寻找函数。或者可以理解为prototype不会克隆同名函数。

  • 相关阅读:
    linux rename命令批量修改文件名
    深度学习在推断阶段(inference)的硬件实现方法概述
    pkg-config原理及用法
    可测性分析
    CMD常用命令
    CMD命令:不是内部或者外部命令也不是可运行的程序或批处理文件
    main函数的参数argc和argv
    Eclipse中的特殊注释:TODO、XXX、FIXME
    whl文件(python)安装方法
    linux软链接和硬链接
  • 原文地址:https://www.cnblogs.com/change-oneself/p/4891445.html
Copyright © 2011-2022 走看看