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对象属性不可被添加和删除