关于对象的类型问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
//补充代码
Object.defineProperty(Object, 'freezePolyfill', {
value: function(obj) {
var i;
for (i in obj) {
if (obj.hasOwnProperty(i)) {
if (typeof obj[i] == 'object') {
Object.freezePolyfill(obj[i]);
}
Object.defineProperty(obj, i, {
writable: false
});
}
}
Object.seal(obj);
}
});
const xiaoming = {
age: 3,
name: 'xm',
obj: {
a: 1
}
};
console.log(xiaoming);
Object.freezePolyfill(xiaoming);
xiaoming.age = 5;
xiaoming.obj.a = 66;
xiaoming.length = 7;
console.log(xiaoming);
</script>
</body>
</html>
为什么使用typeof的话必须是'object'换成Object就报错,而使用instanceof的话就必须是Object换成'object'就会报错?不都是对象吗怎么使用不同的方式获取类型结果还不一样了呢?规定就是这样typeof的结果是'object',instanceof的结果是Object吗?
正在回答
同学你好,首先,我们回顾一下js的数据类型:
(1)6种基本类型:undefined、null、boolean、string、number 以及 ES6新增的 symbol
(2)1种引用类型:object
typeof主要用来检测基本数据类型,返回值是一个字符串,一般只能返回如下几个结果:
"number""string"、"boolean"、"object"、"function" 和 "undefined"。
简单来说,使用 typeof 运算符时,无论引用的是什么类型的对象,它都返回 “object”。instanceof主要用来检测引用类型。所以typeof需要使用'object',而instanceof需要使用Object。
祝学习愉快!
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星