JavaScript 原生物件及擴充套件

發表於2016-09-26

內建物件與原生物件

內建(Build-in)物件與原生(Naitve)物件的區別在於:前者總是在引擎初始化階段就被建立好的物件,是後者的一個子集;而後者包括了一些在執行過程中動態建立的物件。

2993868520-5518de2b15e17_articlex

原生物件(New後的物件)

ECMA-262 把原生物件(native object)定義為“獨立於宿主環境的 ECMAScript 實現提供的物件”。包括如下:

由此可以看出,簡單來說,原生物件就是 ECMA-262 定義的類(引用型別)。

來源: http://es5.github.com/#x4.3.6

內建物件(不需要New)

定義:由ECMAScript實現提供的物件,獨立於宿主環境,在一個指令碼程式執行的開始處。

:每個內建物件(built-in object)都是原生物件(Native Object),一個內建的建構函式是一個內建的物件,也是一個建構函式。

來源:http://es5.github.io/#x4.3.7

舉個栗子:

ECMA-262][2 只定義了兩個新的內建物件,即 GlobalMath (它們也是原生物件,根據定義,每個內建物件都是原生物件)。

以下是ECMA-262定義的內建物件(built-in):

3209960796-551a9ed6cc4af_articlex

我們也可以修改內建物件的原型

以上程式碼將輸出:

注意:擴充套件原型是很危險的:

輸出: FAIL We should only have 3 properties.

如果不是有特殊需要而去擴充套件原生物件和原型(prototype)的做法是不好的

除非這樣做是值得的,例如,向一些舊的瀏覽器中新增一些ECMAScript5中的方法。
在這種情況下,我們一般這樣做:

用原型擴充套件物件

對js原生物件的擴充套件無非就是往prototype裡註冊,例如,我們可以往String物件裡擴充套件ltrim,rtrim等方法。js每個物件都繼承自Object,並且,物件和其他屬性都通過prototype物件來繼承。通過prototype物件,我們可以擴充套件任何物件,包括內建的物件,如StringDate

String物件的擴充套件

Date物件的擴充套件

getDaysInMonth:獲取某月有多少天

使用原生js實現複製物件及擴充套件

jQueryextend()方法能很方便的實現擴充套件物件方法,這裡要實現的是:使用原生js實現複製物件,擴充套件物件,類似jQuery中的extend()方法

es5-safe 模組

es5-safe 模組裡,僅擴充套件了可以較好實現的可以安全使用的部分方法,包括:

詳情:http://es5.github.io/

物件的建立

JavaScript 支援四種型別的物件:內部物件、生成的物件、宿主給出的物件(如 Internet 瀏覽器中的 windowdocument)以及ActiveX 物件(外部元件)。

Microsoft Jscript 提供了 11 個內部(或“內建”)物件。它們是Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、Error 以及 String 物件。每一個物件有相關的方法和屬性,

JavaScript中物件的建立有以下幾種方式:

一、使用內建物件

內建物件列表

以上資料來源於:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects#.E5.9F.BA.E6.9C.AC.E5.AF.B9.E8.B1.A1

自定義物件構造

建立高階物件構造有兩種方式:使用“this”關鍵字構造、使用原型prototype構造

Date物件

get系列方法

set系列方法

toString系列方法

Array物件

屬性

方法

這些方法可以改變陣列自身:

Accessor 方法

這些過程不改變陣列自身

迴圈(迭代)過程

總結:

Boolean

屬性

方法

String 物件

屬性

方法:

注意:String 物件的方法 slice()、substring()substr() 都可返回字串的指定部分。強烈建議在所有場合都使用 slice()方法。

RegExp物件

屬性

方法

Object物件

當以非建構函式形式被呼叫時,Object 等同於 new Object()

屬性或方法

Object的每個例項都具有共同的基本屬性和方法

屬性或者方法 說明
constructor 指向建立當前物件的建構函式
hasOwnProperty(name) 檢測給定屬性name在例項物件(不是原型物件)中是否存在。name以字串形式指定
isPropertyOf(object) 檢測傳入的物件object是否該方法呼叫者的原型物件。一般格式:Class.prototype.isPropertyOf(object)
propertyIsEnumerable(pr) 檢測屬性pr能否用for-in迴圈列舉。屬性pro用字串形式指定
toLocaleString() 返回物件的字串表示。與地區和環境對應
toString() 返回物件的字串表示
valueOf() 返回物件的字串、數值或布林值表示

靜態方法

全域性屬性和方法

全域性方法

430429453-551a9fd9d679d_articlex-1

全域性屬性

360280168-551a9fe987820_articlex

相關文章