zoukankan      html  css  js  c++  java
  • js中prototype用法(转)

    JavaScript能够实现的面向对象的特征有:
    ·公有属性(public field)
    ·公有方法(public Method)
    ·私有属性(private field)
    ·私有方法(private field)
    ·方法重载(method overload)
    ·构造函数(constructor)
    ·事件(event)
    ·单一继承(single inherit)
    ·子类重写父类的属性或方法(override)
    ·静态属性或方法(static member)


    例子一(JavaScript中允许添加行为的类型):可以在类型上使用proptotype来为类型添加行为。这些行为只能在类型的实例上体现。 JS中允许的类型有Array, Boolean, Date, Enumerator, Error, Function, Number, Object, RegExp, String

    Js代码
    1. <script type="text/javascript">
    2. Object.prototype.Property = 1;
    3. Object.prototype.Method = function ()
    4. {
    5. alert(1);
    6. }
    7. var obj = new Object();
    8. alert(obj.Property);
    9. obj.Method();
    10. </script>

    例子二(prototype使用的限制):在实例上不能使用prototype,否则发生编译错误

    Js代码
    1. <script type="text/javascript">
    2. var obj = new Object();
    3. obj.prototype.Property = 1; //Error
    4. //Error
    5. obj.prototype.Method = function()
    6. {
    7. alert(1);
    8. }
    9. </script>

    例子三(如何定义类型上的静态成员):可以为类型定义“静态”的属性和方法,直接在类型上调用即可

    Js代码
    1. <script type="text/javascript">
    2. Object.Property = 1;
    3. Object.Method = function()
    4. {
    5. alert(1);
    6. }
    7. alert(Object.Property);
    8. Object.Method();
    9. </script>

    例子五():这个例子演示了通常的在JavaScript中定义一个类型的方法

    Js代码
    1. <script type="text/javascript">
    2. function Aclass()
    3. {
    4. this.Property = 1;
    5. this.Method = function()
    6. {
    7. alert(1);
    8. }
    9. }
    10. var obj = new Aclass();
    11. alert(obj.Property);
    12. obj.Method();
    13. </script>

    例子六(JavaScript中允许添加行为的类型):可以在外部使用prototype为自定义的类型添加属性和方法。

    Js代码
    1. <script type="text/javascript">
    2. function Aclass()
    3. {
    4. this.Property = 1;
    5. this.Method = function()
    6. {
    7. alert(1);
    8. }
    9. }
    10. Aclass.prototype.Property2 = 2;
    11. Aclass.prototype.Method2 = function
    12. {
    13. alert(2);
    14. }
    15. var obj = new Aclass();
    16. alert(obj.Property2);
    17. obj.Method2();
    18. </script>

    例子八():可以在对象上改变属性。(这个是肯定的)也可以在对象上改变方法。(和普遍的面向对象的概念不同)

    Js代码
    1. <script type="text/javascript">
    2. function Aclass()
    3. {
    4. this.Property = 1;
    5. this.Method = function()
    6. {
    7. alert(1);
    8. }
    9. }
    10. var obj = new Aclass();
    11. obj.Property = 2;
    12. obj.Method = function()
    13. {
    14. alert(2);
    15. }
    16. alert(obj.Property);
    17. obj.Method();
    18. </script>

    例子九():可以在对象上增加属性或方法

    Js代码
    1. <script type="text/javascript">
    2. function Aclass()
    3. {
    4. this.Property = 1;
    5. this.Method = function()
    6. {
    7. alert(1);
    8. }
    9. }
    10. var obj = new Aclass();
    11. obj.Property3 = 3;
    12. obj.Method3 = function()
    13. {
    14. alert(3);
    15. }
    16. alert(obj.Property3);
    17. obj.Method3();
    18. </script>

    例子十(如何让一个类型继承于另一个类型):这个例子说明了一个类型如何从另一个类型继承。

    Js代码
    1. <script type="text/javascript">
    2. function AClass()
    3. {
    4. this.Property = 1;
    5. this.Method = function()
    6. {
    7. alert(1);
    8. }
    9. }
    10. function AClass2()
    11. {
    12. this.Property2 = 2;
    13. this.Method2 = function()
    14. {
    15. alert(2);
    16. }
    17. }
    18. AClass2.prototype = new AClass();
    19. var obj = new AClass2();
    20. alert(obj.Property);
    21. obj.Method();
    22. alert(obj.Property2);
    23. obj.Method2();
    24. </script>

    例子十一(如何在子类中重新定义父类的成员):这个例子说明了子类如何重写父类的属性或方法。

    Js代码
    1. <script type="text/javascript">
    2. function AClass()
    3. {
    4. this.Property = 1;
    5. this.Method = function()
    6. {
    7. alert(1);
    8. }
    9. }
    10. function AClass2()
    11. {
    12. this.Property2 = 2;
    13. this.Method2 = function()
    14. {
    15. alert(2);
    16. }
    17. }
    18. AClass2.prototype = new AClass();
    19. AClass2.prototype.Property = 3;
    20. AClass2.prototype.Method = function()
    21. {
    22. alert(4);
    23. }
    24. var obj = new AClass2();
    25. alert(obj.Property);
    26. obj.Method();
    27. </script>
  • 相关阅读:
    Js将字符串转换成对象或数组en
    iview渲染函数
    iview中render函数监听事件
    Arduino Nano 读取ADS1100实例
    Raspberry Pi 3 安装 Lazarus 1.6.2(2017-02-09更新)
    Lazarus for Raspbian安装
    Delphi xe7 FireMonkey / Mobile (Android, iOS)生成 QR Code完整实例
    Delphi xe7 up1 调用android振动功能
    Delphi xe7 android实现透明度可以调整的对话框
    delphi XE7 在Android编译SharedActivity时出错
  • 原文地址:https://www.cnblogs.com/itjeff/p/3863109.html
Copyright © 2011-2022 走看看