韓順平 javascript教學視頻_學習筆記13_類和對象細節_建立對象的幾種方式_js對象記憶體分析__js

來源:互聯網
上載者:User
對象——function特別說明 在js中一切都是對象
類(原型對象)其實也是對象,它實際上是Function類的一個執行個體,通過類我們可以建立自己的對象執行個體,可以通過下面的代碼來說明
function Person(){  }  var a=new Person();  window.alert(Person.constructor);
對象執行個體——如何建立對象執行個體 var 對象名=new 類名/原型對象名();
對象執行個體——如何訪問(使用)對象執行個體的成員變數 對象執行個體名.屬性名稱;
對象執行個體名["屬性名稱"];

對象執行個體名["變數名"]的方式可以實現動態訪問變數,如:
function Person(){  }  var p1=new Person();  p1.name="順平";  window.alert(pa['name']+" "+p1.name); 
補充說明:帶var和不帶var的區別 看代碼:

<html>  <head>  <script language="javascript">  //全域變數  var abc=89;  function test(){  //在函數裡,如果你不帶 var,則表示使用全域的 abc 變數  //如果你帶上var,則表示重新定義一個新的 abc 變數  //可以這麼理解,//在函數內部,加 var 表示定義一個局部變數,不加 var 表示使用外部的全域變數  abc=900;  }  test();  window.alert(abc); //輸出900    var abc2=89;  function test2(){  var abc2=900;  }  test2();  window.alert(abc2); //輸出89  </script>  </head>  <body></body>  </html>  

動態訪問變數的意義:可以當作串來拼接訪問 具體看如下代碼

<html>  <head>  <script language="javascript">  function Person(){  }  var p1=new Person();  p1.name="順平";  //拼接字串,動態訪問  var val="na"+"me";  window.alert(p1[val] + p1.name);  </script>  </head>  <body></body>  </html>  
加深一下理解 為了讓大家加深印象,我們定義一個人類(Person)(包括名字,年齡)
看下面的一段代碼

<html>  <head>  <script language="javascript">  function Person(){  }  var a=new Person();  a.age=10;  a.name="小明";  var b=a;  b.name="小白";  window.alert(b.age+"名字 "+b.name+" 名字"+a.name);  </script>  </head>  <body></body>  </html> 

從上面代碼中可以知道,js對象的傳遞也是引用傳遞

var a=new Person(); // new Person()是一個真正的資料,a是指向它的一個引用
深入理解:

什麼時候才會把堆裡的內容回收了呢
對象回收機制(GC),記憶體回收(GC)是怎樣確定堆裡的內容是垃圾的呢,記憶體被js引擎管理,js引擎是瀏覽器的一部分,js引擎維護了一張表



記憶體回收機制是一種被動的回收方式,GC什麼時候來調用,我們是不知道的,反正不是時時刻刻在調用的
在js中還有一種主動的刪除方式,主動釋放記憶體:delete delete 只能刪除掉某個對象的屬性,不能直接刪除某個對象 如下:

delete a.age;  //直接把age屬性刪掉了,即使b沒有置空,b.age也訪問不到了。delete a;  //這句話是不對的

delete直接刪除掉某個對象的屬性
delete 對象名.屬性  //這樣就會立即釋放對象的這個屬性空間

再來看一個代碼:
var a=new person();a.age=10;a.name="小明";var b=a;document.write(b.name); // 輸出小明b.age=200;document.write(a.age); // 輸出200
相關文章

聯繫我們

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