JavaScript基於原型的對象(建立、調用)

來源:互聯網
上載者:User
JavaScript中的對象有三種

1,內部對象    如Array,Boolean,Data,Math,Number,Object,RegExp,String對象等    這些對象系統給我們提供了各自的屬性與方法供調用。2,基於類的對象    用類的方式實現對象的引用,這些類需要我們自己定義3,基於原型的對象    提供有關如何使用 JavaScript 基於原型的物件模型的指南,並且提供指向特定資訊的連結,這些資訊描述基於原型的對象的自訂建構函式和繼承。    在我們寫js代碼的時候,內部對象是不可避免的要引用,但是光靠這些對象是不夠的,所以需要我們自己定義對象,這個時候通常用到的對象是第三種,即基於原型的對象,下面就如何建立自己的對象,定義對象的方法、屬性,調用對象給出詳細的說明。    //JScript 的一個強大功能是能夠定義建構函式,以建立自訂的基於原型的對象,以便在您的指令碼中使用。
    //要建立基於原型的對象的執行個體,首先必須定義一個建構函式。
    //此過程將建立一個新對象並將它初始化(建立屬性並賦初始值)。
    //當完成後,建構函式將返回對所構造對象的引用。
    //在建構函式內部,建立的對象是通過 this 語句引用的。
    function people(name,age)//定義people對象
    {
        this.mName=name;//這裡的mName表示屬性,無需在外面定義,this指示的是people這個對象
        this.Age=age;
        this.category="哺乳動物";
        this.toString=Exporting;//方法,注意這裡只能寫toString,而不是toString()
        this.myMethod=function()//等價於this.myMethod=method;然後下面寫method的方法
            {
                return "你好";
            }
    }

    function Exporting()//可以有傳回值,但函數名前不用寫傳回值的類型,如string,int之類
    {
        return "我的名字是——"+this.mName+",年齡是——"+this.Age;
    }
    
    /*function method()
    {
        return "你好";
    }*/
    
    people.prototype.getName=function()//在建構函式外面寫方法,
    //也也可以這樣寫function people.prototype.getName()
    //等價於在建構函式裡面的方法:this.getName        
    {
        return this.mName;
    }
    
    people.prototype.getAge=this.Age;//在建構函式外面寫屬性,
     //等價於在建構函式裡面的方法:this.getAge
    
    function people.prototype.getMoney()//同people.prototype.getMoney=function()等價
   //也等價於在建構函式裡的寫法:this.getMoney    
    {
        return "1000";
    }
    
    function show()//調用people對象
    {
        var me=new people("劉德華",22);//執行個體化people對象,關鍵字new
        //var myName=me.getName();
        //alert(myName);
        me.sex="男";//這裡的sex屬性只能用於me這個執行個體,即特有屬性
                         //而如果有定義var you =new people("小強",1);
                         //you這個執行個體卻不能調用sex屬性
                         //如果要這兩個執行個體都可以引用的話應該把sex屬性寫作people.prototype.sex
        //alert(me.sex);
        //alert(me.category);
        //alert(me.toString());//或者直接寫alert(me)即可
        //alert(me.myMethod());
        //alert(me.getMoney());
        alert(me.myMethod()+"\n姓名:"+me.getName()+"\n性別:"+me.sex+"\n類別:"+me.category+"\n總資產:"+me.getMoney()+"\n總結:"+me.toString());
    }    根據上面的思路,可以在JavaScript內建對象上添加其它屬性或者方法,下面為String對象增加一    good方法和bad屬性,這是內建對象中所沒有的方法和屬性    String.prototype.good=function()//自訂方法
    {
        return "恭喜你成功對內建String對象追加good方法";
    }
    
    String.prototype.bad="恭喜你成功對內建String對象追加bad屬性";//自訂屬性
    
    function test()//調用String對象追加的屬性和方法
    {
        var str="good good study";//定義一個字串執行個體str
        alert(str.good()+"\n"+str.bad);//調用自訂的string對象的方法good和屬性bad
    }最後在html中添加兩個button按鈕,測試對象people和string對象追加的方法和屬性<html>
<title>JavaScript基於原型的對象</title>
    <body>
        <div>
            <input type="button" value="自訂對象定義" onclick="show()">
        </div>
        <div>
            <input type="button" value="內建對象追加方法" onclick="test()">
        </div>
    </body>
</html>測試結果通過。。。。。。。表明對象的建立、對象方法屬性的調用、內部對象的追加方法和屬性調用都是正確的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.