javascript--對象的特性

來源:互聯網
上載者:User

標籤:原型   拷貝   對象   turn   接收   記憶體   設計模型   針對   封裝   

對象具有三大特性:封裝,繼承,多態

一、封裝  

  1.函數的封裝是為了函數的安全性,將對象進行封裝,通過有限的介面衍化不同的對象

  2.工廠函數封裝

    工廠函數是設計模型中的一種說法,不是通過類執行個體化建構函式,而是通過函數進行構造對象,在函數內部建立一個對象,通過參數的傳遞實現對象的更多控制,並將對象返回,當屬性相同時造成記憶體的浪費。

// (函數裡建立一個對象,對象的屬性值由自己傳入,)            function person(name,age,say){                var obj ={};                   obj.name=name;                obj.age=age;                obj.say=say;    //回調                return obj;            }            function say1 (){                alert(‘說話‘)            }            function say2 (){                alert(‘笑‘)            }            var ls =person(‘ls‘,16,say2);  //(不需建構函式,接收的傳回值本身就是對象)            var zs =person(‘zhangsan‘,18,say1);            // (zs變為對象,接收工廠函數的傳回值)

  3.建構函式封裝

function person(name,age){    this.name=name;    this.age=age;}person.prototype.say=function(){    alert("說話")}var zs=new person("zs",12);var ls=new person("ls",15);zs.say();ls.say();
console.log(ls instanceof Object)  //true
console.log(ls instanceof person) //true
//公用程式碼片段放在prototype原型中儲存,其屬性是固定的,不可改變

  4.建構函式與工廠函數的異同

    1)工廠函數需要建立對象,並且必須有傳回值

    2)工廠函數針對的是Object的物件模型,而建構函式可以匹配自訂的物件模型

    3)工廠函數只能在局部添加新的屬性和方法,建構函式可重寫,在全域中添加新屬性和方法

    4)建構函式在全域中定義相同的局部變數,容易造成全域汙染,this.xx在局部中擷取不到,就會去全域中擷取。

二、繼承(實現代碼的重複使用)

  1.繼承的原理:拷貝

    1)深拷貝:拷貝對象的值

    2)淺拷貝:拷貝對象的地址,影響來源物件的屬性值

 var json={name:"zhangsan",age:12,son:{name:"lisi"}}  var json1=copy(json)    //淺拷貝    function copy(json){        var newobj={}        for(var i in json){            newobj[i]=json[i]        }        return newobj;    }    json1.son.name="lisi1"    console.log(json.son.name)  //lisi1    //深拷貝    function copy(json){        var newobj={};        for(var i in json){            if(typeof json[i]=="object"){                newobj[i]=copy(json[i])            }else{                newobj[i]=json[i]            }        }        return newobj    }    json1.son.name="lisi1"    console.log(json.son.name)  //lisi

  2.

javascript--對象的特性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.