Js高程笔记

JavaScript高级程序设计笔记

类型检测

  1. typeof操作符并不可靠,在判断引用类型如[],{},function(){}以及null的返回值都是object
  2. 对于instanceof来说,也存在不可靠的情况,它存在多个全局作用域,比如一个页面包含多个iframe
    var isArray = value instanceof Array看起来可以检测是否为数组,但是如果value是在另一个frame中定义的数组,则isArrayfalse
  3. 最好的解决办法利用Object原生的toString方法,例子如下
    1
    2
    3
       function isArray(value) {
    return Object.prototype.toString.call(value) === '[object Array]'
    }
  4. 但是使用toString检测非原生构造函数时都将返回[object Object]
  5. 所以可以利用这里来判断是否是原生的JSON
    1
    var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON) == "[object JSON]"

防篡改对象

不可扩展对象

  • 使用Object.preventExtensions(object)来阻止object增加其他属性和方法

密封的对象

  • 使用Object,seal(object)来保护object对象属性不可被添加和删除