JavaScript 本地物件、內建物件和宿主物件

admin發表於2019-01-01

JavaScript中,有很多知識點,你沒有掌握,並不會太影響工作。

比如標題中的內建物件、宿主物件和本地物件,僅是物件類別劃分方面的知識。

所以對實際編寫程式碼並不造成太大影響, 不過依然建議要這些概念有清晰的掌握。

主要基於如下幾個原因:

(1).如果對這些概念不清晰,可能在閱讀文件時給你造成掣肘。

(2).知識結構的全面和概念的清晰是水平提高的必備條件。

(3).對知識點的不馬虎是心理上的強烈需求。

一.本地物件:

本地物件也可以叫做原生物件或者內部物件。

此類物件獨立於宿主環境,由ECMA提供,所以每一種宿主環境都可以使用本地物件。JavaScript中的本地物件有Object、Function、Array、String、Boolean、Math、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError和Global。

二.內建物件:

內建物件與本地物件有如下兩點相同:

(1).獨立於宿主環境,由ECMA提供。

(2).每一種宿主環境都可以使用。

內建物件有自己的特點,那就是無需使用new +建構函式建立,而是JavaScript引擎初始化的時候就被建立。

比如Global物件和Math物件,大家有誰見過通過建構函式建立Math物件例項,都是採用如下使用方式:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(Math.PI)

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201901/01/162112swvwekvqnvo2ewei.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到,內建物件是本地物件的一個子集。

三.宿主物件:

首先要明確什麼是宿主,ECMA僅是一套規範,也就是指定的一套程式設計規則。

但是規則畢竟是規則,如果要發揮作用,必須要有平臺或者說環境,這就是ECMA的宿主。

瀏覽器就是MCMA宿主之一,我們所說的JavaScript其實就是EMCA在瀏覽器上具體實現。

JavaScript中的宿主BOM與DOM物件,他們都屬於window物件的子物件。

四.程式碼例項:

下面通過一個簡單的程式碼例項,再來明確一下三個物件。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<meta name="author" content="http://www.softwhy.com/" /> 
<title>螞蟻部落</title>
<style>
div {
  width:100px;
  height:100px;
  background-color:#ccc;
}
</style>
<script>
function getcl(){
  var arr = []
  var i =0;
  var C = '0123456789ABCDEF';
  while(i++ < 6){
    x=Math.random()*16;
    b=parseInt(x);
    c=C.substr(b,1);
    arr.push(c);
  }
  var cl = "#"+ arr.join('');
  return cl;
}
window.onload = function () {
  var obt = document.getElementById("bt");
  var odiv = document.getElementById("ant");
  obt.onclick = function () {
    odiv.style.backgroundColor = getcl();
    odiv.style.width=Math.random()*150+"px";
  }
}
</script>
</head> 
<body>
<div id="ant"></div>
<input type="button" id="bt" value="檢視演示"/>
</body>
</html>
 點選按鈕可以隨機設定元素的背景顏色和寬度,程式碼分析如下:
(1).上面有賦值運算子(=)的應用,這是ECMAS制定的規範。
(2).document.getElementById方法則是宿主物件document所提供的。
(3).在獲取隨機顏色和寬度的時候都用到了Math物件,這是本地物件提供了,同時也是內建物件。
(3).parseInt方法屬於Global物件,屬於本地物件,也屬於內建物件,都是ECMA規範提供。

相關文章