zoukankan      html  css  js  c++  java
  • javascript prototype学习(一)prototype的用处

    prototype据我所知,用处主要有两种:

    1、prototype属性使您有能力向对象添加属性和方法。 

    <script type="text/javascript">
    function employee(name,job,born)
    {
    this.name=name;
    this.job=job;
    this.born=born;
    }
    employee.prototype.salary=20000;
    employee.prototype.getName= function()
    {
         alert("Name:"+this.name)
    };
    
    var bill=new employee("Bill Gates","Engineer",1985);
    alert("salary:"+bill.salary);
    bill.getName();
    </script>

     本例就通过prototype属性向employee这个类中添加了一个属性salary和方法getName(),网页加载后弹出bill的salary和name。

    2、prototype实现继承

    部分转载自http://www.cnblogs.com/goody9807/archive/2007/04/16/715109.html

    首先看示例1,使用prototype属性继承了父类的属性a

    <script type="text/javascript">
    function ClassA()
    {
        this.a='a';
    }
    function ClassB()
    {
        this.b='b';
    }
    
    ClassB.prototype=new ClassA();
    var objB1=new ClassB();
    alert(objB1.a);
    </script>
    ClassB继承了ClassA的属性,网页加载后弹出“a”;

    示例2,当父类属性是String,Number和Boolean等简单类型时,子类修改父类的属性,彼此不受影响

    当父类属性是Array和Object类型时,子类修改父类的属性,会导致所有继承的子类属性全部发生变化

    这是因为对于简单类型,prototype是值拷贝,而对于复杂类型,则是引用地址拷贝。

    <script type="text/javascript">
    function ClassA()
    {
        this.a='a';
        this.array1=[];
    }
    function ClassB()
    {
        this.b='b';
    }
    ClassB.prototype=new ClassA();
    var objB1=new ClassB();
    var objB2=new ClassB();
    //修改父类string类型
    objB1.a='!!!';
    alert(objB1.a);
    alert(objB2.a);
    //修改父类array类型
    objB1.array1.push(1,2,3);
    alert(objB1.array1);
    alert(objB2.array1);
    </script>

     网页加载后依次弹出"!!!", “a”, “1,2,3”, “1,2,3”

     objB1和objB2中的array1对象都引用的是classA中的array1对象,因此一个改变,会同步影响另一个。

  • 相关阅读:
    分别使用委托、接口、匿名方法、泛型委托实现加减乘除运算
    Resharper快捷键及用法
    js10秒倒计时鼠标点击次数统计
    NHibernate无法将类型“System.Collections.Generic.IList<T>”隐式转换为“System.Collections.Generic.IList<IT>
    C# 泛型
    Redis的五种数据结构
    ASP.NET mvc异常处理的方法
    ServiceStack 概念参考文摘
    Modelsim se仿真Xilinx IPcore
    初学FPGA
  • 原文地址:https://www.cnblogs.com/king1302217/p/2836048.html
Copyright © 2011-2022 走看看