zoukankan      html  css  js  c++  java
  • js prototype 详解(学习) 简单

    <html>
    <head>
    <title>JS学习</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    js prototype 详解
    <script>
    //例子一
    /*Object.prototype.Peoperty = 1;
    Object.prototype.Method = function()
    {
    alert("this method 1");
    }
    var obj = new Object();
    alert(obj.Peoperty);
    obj.Method();*/
    //可以在类型上使用ptoptotype来为类型添加行为,这些行为只能在类型的实例上体现
    //JS中允许的类型有Array, Boolean, Date, Enumerator, Error, Function, Number, Object, RegExp, String


    //例子二
    /*var obj = new Object();
    obj.prototype.Property = 1;
    obj.prototype.Mothod = function()
    {
    alert("1");
    }*/
    //在实例上不能使用prototype,否则发生编译错误

    //例子三
    /*Object.Property = 1;
    Object.Method = function()
    {
    alert("this method");
    }
    alert(Object.Property);
    Object.Method();*/
    //可以为类型定义"静态"的属性和方法,直接在类开

    //例子四
    /*//MyObject.Property = 1;
    //只能使用Object关键字才行
    Object.Property = 1;
    Object.Method = function()
    {
    alert("this MyObject");
    }
    //var obj = new MyOjbect();
    //alert(obj.Property);
    //obj.Method();
    Object.Method();*/
    //Error 实例不能调用类型的静态属性或方法,否则发生对像未定义的错误


    //实例五
    /*function Aclass()
    {
    this.Property = 1;
    this.Method = function()
    {

    alert("Aclass Method");
    }
    }
    var obj = new Aclass();
    alert(obj.Property);
    obj.Method();*/
    //这个例子演示了通常的在JavaScript中定义的一个类型的方法


    //例子六
    /*function Aclass()
    {
    this.Property = 1;
    this.Method = function()
    {
    alert("Aclass Method");
    }
    }
    Aclass.prototype.Property2 = 2;
    Aclass.prototype.Method2 = function()
    {
    alert("Aclass Method2");
    }
    var obj = new Aclass();
    alert(obj.Property2);
    obj.Method2();*/
    //可以在外部使用prototype为自定义的类型添加属性和方法


    //例子七
    /*function Aclass()
    {
    this.Peoperty = 11;
    this.Method = function()
    {
    alert("this Method");
    }
    }
    Aclass.prototype.Peoperty = 22;
    Aclass.prototype.Method = function()
    {
    alert("Aclass Method2");
    }
    var obj = new Aclass();
    alert(obj.Property); //我测试的结果为: 属性是可以在外部进行修改的
    obj.Method(); //但方法在外部修改不起作用*/
    //后面发现单词写错了
    //在外部不能通过prototype改变自定义类型的属性和方法
    //该例子可以看到,调用的属性和方法仍是最初定义的结果
    //===================================================


    //例子八
    /*function Aclass()
    {
    this.Peoperty = 11;
    this.Method = function()
    {
    alert("this Method");
    }
    }
    var obj = new Aclass();
    obj.Peoperty = 22;
    obj.Method = function()
    {
    alert("this Method2");
    }
    alert(obj.Peoperty);
    obj.Method();*/
    //可以在对像上改变属性
    //也可以在对像上改变方法(和普通的面向对像的不同)

    //例子九
    /*function Aclass()
    {

    this.Property = 1;
    this.Method = function()
    {
    alert("this Method");
    }
    }
    var obj = new Aclass();
    obj.Property2 = 22;
    obj.Method2 = function()
    {
    alert("this Method2");
    }
    alert(obj.Property2);
    obj.Method2();*/
    //可以在对像上增加属性或方法


    //例子十
    /*function Aclass()
    {
    this.Property = 1;
    this.Method = function()
    {
    alert("this Method");
    }
    }

    function Aclass2()
    {
    this.Property2= 22;
    this.Method2 = function()
    {
    alert("this Method2");
    }
    }

    Aclass2.prototype = new Aclass(); //Aclass2继承Aclass类型
    var obj = new Aclass2();
    alert(obj.Property);
    obj.Method();
    alert(obj.Property2);
    obj.Method2();*/
    //说明了一个类型如何从另一个类型继承


    //例子十一
    function Aclass()
    {
    this.Property = 1;
    this.Method = function(){
    alert("this Method");
    }
    }
    function Aclass2()
    {
    this.Property2 = 22;
    this.Method2 = function(){
    alert("this Method2");
    }
    }
    Aclass2.prototype = new Aclass();
    Aclass2.prototype.Property = 33;
    Aclass2.Property.Method = function()
    {
    alert("this Method");
    }
    alert(obj.Property);
    obj.Method();
    //这个例子说明了子类如何重写父类的属性或方法

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

    </body>
    </html>

  • 相关阅读:
    Yarn Client 模式
    K8S & Mesos 模式
    python_切片
    RDD执行原理
    基础编程
    python_html模板
    python_返回值
    python_机器学习_平均中位数模式
    VISIO下载+安装+第一个数据流图
    session对象
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2827159.html
Copyright © 2011-2022 走看看