javascript繼承方式之原型鏈

字號:


    下面的簡單例子中將你的姓名保存為一個cookie:
    function setcookie()
    {
    var
    the_name = prompt(what's your name?,);
    var the_cookie =
    wm_javascript=username: + escape(the_name);
    document.cookie =
    the_cookie;
    alert(thanks, now go to the next
    page.);
    }
    函數(shù)中間的兩行是關(guān)鍵:
    var the_cookie = wm_javascript=username: + escape (the_name);
    如果我在提示框中輸入了dave thau,該行代碼將生成一個字符串wm_javascript=username:dave%20thau.這就是說我將把一個名為wm_javascript的cookie保存到硬盤.該cookie的值是username:dave%20thau - 函數(shù) escape()將dave 和thau間的空格用%20做了替換.當我們讀取cookie時,我們尋找名為wm_javascript的cookie,然后提取username:dave%20thau,將其用 unescape()解碼,去掉username:.
    document.cookie = the_cookie;原型鏈是在原型方式上的擴展.原型鏈是通過prototype對象的任何屬性和方法都被傳遞給第二個類的所有實例.
    function a()
    {
    this.name = 原型鏈;
    this.show_name = function(){alert(this.name);}
    }
    function b(){}
    b.prototype = new a();//這是的原型鏈的形式.
    原型鏈,吧b的prototype屬性設(shè)置為a的實例,這樣b就有了a的方法和屬性.在調(diào)用a的構(gòu)造函數(shù)時,沒有參數(shù),這是原型鏈的百兆年做法,要確保構(gòu)造函數(shù)中沒有任何參數(shù).
    當b的prototype屬性被賦值后,b之前的方方和屬性將被銷毀.如果想再給b添加方法或者屬性的話.
    b.show_new = function(){alert(this.name)};
    var obja = new a();
    obja.show_name();//輸出原型鏈
    var obja.name = 原型鏈2;
    obja.show_name();//輸出原型鏈2
    var objb = new b();
    objb.show_name();//輸出原型鏈
    objb.name = 原型鏈2;
    objb.show_name();//輸出原型鏈2
    objb.show_new();//輸出原型鏈2
    以上就是對javascript繼承方式原型鏈的介紹