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 在继承中只能继承类级别的方法和属性,不是去笼统的都继承。

  • 相关阅读:
    循环图片 yi
    给大家一个经典的.net情感故事 yi
    [东邪西毒][程序员版][原版][剧情] yi
    Sqlite 使用笔记 中文显示为乱码 yi
    sql2005安装过程,(不装C盘) yi
    Visual Studio 2010 美女与程序员的爱情网剧全集 yi
    IT行业几大职业病 yi
    标准化操作
    【ActiveMQ Tuning】Serializing to Disk
    我的山寨敏捷四季之春
  • 原文地址:https://www.cnblogs.com/haoke/p/4204873.html
Copyright © 2011-2022 走看看