Js高程笔记
2019-04-30
JavaScript高级程序设计笔记
类型检测
typeof
操作符并不可靠,在判断引用类型如[]
,{}
,function(){}
以及null
的返回值都是object
- 对于
instanceof
来说,也存在不可靠的情况,它存在多个全局作用域,比如一个页面包含多个iframe
var isArray = value instanceof Array
看起来可以检测是否为数组,但是如果value是在另一个frame
中定义的数组,则isArray
为false
- 最好的解决办法利用
Object
原生的toString
方法,例子如下1
2
3function isArray(value) {
return Object.prototype.toString.call(value) === '[object Array]'
} - 但是使用
toString
检测非原生构造函数时都将返回[object Object]
- 所以可以利用这里来判断是否是原生的JSON
1
var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON) == "[object JSON]"
防篡改对象
不可扩展对象
- 使用
Object.preventExtensions(object)
来阻止object
增加其他属性和方法
密封的对象
- 使用
Object,seal(object)
来保护object
对象属性不可被添加和删除