ES5新增的東西數組
2、對象方法安全
一、Object.getPrototypeOf(object)函數
返回對象的原型ui
function Pasta(grain, width) { this.grain = grain; this.width = width; } var spaghetti = new Pasta("wheat", 0.2); var proto = Object.getPrototypeOf(spaghetti); console.log(proto)
輸出:this
二、Object.createspa
必需。 要用做原型的對象。 能夠爲 null。 prototype
descriptors可選。 包含一個或多個屬性描述符的 JavaScript 對象。 3d
「數據屬性」是可獲取且可設置值的屬性。 code
數據屬性描述符包含 value 特性,對象
以及 writable、enumerable 和 configurable 特性。
若是未指定最後三個特性,則它們默認爲 false。
返回:一個具備指定的內部原型且包含指定的屬性(若是有)的新對象
var newObj = Object.create(null, { size: { value: "large", enumerable: true }, shape: { value: "round", enumerable: true } }); document.write(newObj.size + "<br/>"); document.write(newObj.shape + "<br/>"); document.write(Object.getPrototypeOf(newObj)); // Output: // large // round // null
Object.defineProperty(obj, prop, descriptor)
Object.defineProperties(obj, props)
obj: 將要被添加屬性或修改屬性的對象
var obj = new Object(); Object.defineProperties(obj, { name: { value: '張三', configurable: false, writable: true, enumerable: true }, age: { value: 18, configurable: true } }) console.log(obj.name, obj.age) // 張三, 18
var obj = { 0: 'a', 1: 'b', 2: 'c' }; console.log(Object.keys(obj)); // console: ['0', '1', '2']
3、 strict模式(嚴格模式)
「use strict」
將"use strict"放在腳本文件的第一行,則整個腳本都將以"嚴格模式"運行。
嚴格模式影響範圍
設立"嚴格模式"的目的,主要有如下幾個:錯誤檢測、規範、效率、安全、面向將來
- 消除Javascript語法的一些不合理、不嚴謹之處,減小一些怪異行爲;
- 消除代碼運行的一些不安全之處,保證代碼運行的安全;
- 提升編譯器效率,增長運行速度;
- 爲將來新版本的Javascript作好鋪墊。
將"use strict"放在函數體的第一行,則整個函數以"嚴格模式"運行。
function strict(){ "use strict"; return "這是嚴格模式。"; } function notStrict() { return "這是正常模式。"; }
具體體現:
a、變量都必須先用var命令顯示聲明,而後再使用
b、嚴格模式不能對變量調用 delete 操做符
c、不用保留字作 變量名 或 參數名
d、爲只讀屬性賦值報錯
e、嚴格模式下參數名不能重複
f、只能在腳本的頂級和在函數內部申明函數,if for等語句中申明函數會致使語法錯誤
g、嚴格模式下抑制this
4、Array.isArray()
用於肯定傳遞的值是不是一個 Array
。
Array.isArray([1, 2, 3]); // true Array.isArray({foo: 123}); // false Array.isArray("foobar"); // false Array.isArray(undefined); // false
// 下面的函數調用都返回 true Array.isArray([]); Array.isArray([1]); Array.isArray(new Array()); // 不爲人知的事實:其實 Array.prototype 也是一個數組。 Array.isArray(Array.prototype); // 下面的函數調用都返回 false Array.isArray(); Array.isArray({}); Array.isArray(null); Array.isArray(undefined); Array.isArray(17); Array.isArray('Array'); Array.isArray(true); Array.isArray(false); Array.isArray({ __proto__: Array.prototype });
instanceof
和 isArray
當檢測Array實例時, Array.isArray
優於 instanceof,由於Array.isArray能檢測iframes
.