zoukankan      html  css  js  c++  java
  • js中关于prototype学习(2015年1月5号晚)

    prototype在js中为原型,只要是对象都有原型,最高原型为Object。

    函数作为一特殊的对象,下面探讨prototype(原型)和function(函数)之间的关系。

    function A (name){
    this.name = name;
    this.f1= function(){
    alert("这是A的对象方法,每个对象都可以调用"+this.name);
    }
    }
    
    A.fA=function (){
    alert("这是类方法,只用类可以调用,对象不可以调用");
    }
    
    //下面使B继承A
    function B (name){
    this.name = name;
    this.f2=function(){
    alert("这是B的对象的方法,每个对象都可以调用"+this.name);
    }
    }
    B.fB= function (){
    alert("这是B类的方法,对象不可调用");
    }
    //进行继承操作
    B.prototype = A;

    下面分别进行调用测试:

    1.只对于A函数进行测试:

    var a = new A("hello");//创建一个A对象a
    //测试分别调用f1()和fA()方法
    a.f1();
    a.fA();

    通过测试可以得出,只用f1()方法执行了,而fA()方法没有被执行。这种形式有点类似java中的类与对象、类方法和对象方法。

    f1()是对象方法,只要是A的对象就有这种方法;fA()是类方法,只有类级别的才具用这种方法,此时正确调用方法为A.fA();

    ps:类方法只用类可以调用,对象方法只用对象可以调用,类不能调用对象方法,对象不能调用类方法。

    2.对B进行测试:

    var b = new B("world");//创建B的对象b
    //用对象b,分调用f1(),fA(),f2(),fB()
    b.f1();
    b.fA();
    b.f2();
    b.fB();

    对上面4中方法进行单条测试,通过测试可得出,只用方法fA()、f2()可以执行。

    分析:在使用B.prototype=A;时就是声明对象B继承了对象A,这种继承只是继承了A中的fA(),应为fA()为类方法,

    对于f2(),fB()前面已经说明完毕,

    ps: prototype 在继承中只能继承类级别的方法和属性,不是去笼统的都继承。

  • 相关阅读:
    os模块
    sys模块
    time时间模块
    collections模块
    修改Jenkins的主目录步骤
    jenkins管理
    求2个集合的差集
    MVC动态二级域名解析
    解决MVC 时间序列化的方法
    MVC修改视图的默认路径
  • 原文地址:https://www.cnblogs.com/haoke/p/4204873.html
Copyright © 2011-2022 走看看