js对象和Object关系、以及js数据类型杂谈

来源:互联网 发布:node schedule 每秒 编辑:程序博客网 时间:2024/06/16 18:52

今晚上很意外看到一个面试题,js对象和Object的关系,然后梳理了下脑中的知识~~

JavaScript对象和Object关系


        W3C上有说JavaScript中所有事物都是对象:数字、字符串、数组、函数等等…我感觉从某种意义上是对的,但也有例外,首先js对象就是一种具有属性和方法的特殊数据类型,而Object是js中原型链的起点,js中的对象都继承了他,有一个方法可以验证就是使用instanceof方法,instanceof的作用是检测一个构造函数的prototype是否在一个对象的原型链上,比如说;

var arr = [ 1, 2 ];arr instanceof Object;//true,检测Object构造函数的prototype是否在arr对象的原型链上

刚才我有说的例外,就是像字符串这种基本数据类型字面量声明方式,我们都知道字符串有两种声明方式,字面量:

var str1 = '123';

和构造函数方式:

var str2 = new String( '123' );

这样的话str1就不是一个对象,没有属性和方法,str2是一个对象,这样说可能会产生误解,因为我们知道str1也是可以访问属性的:

str1.length;//3

这是怎么回事呢?这里其实是通过String构造函数生成了一个临时的对象:

var _str = new String( str );_str.length;//3,然后再把_str对象给销毁掉

比如说我们这样测试下:

var str = '123';str.a = 1;//这里会利用String构造函数产生一个临时对象str.a;//undefined,这里又是产生的另外一个临时对象,所以属性a为undefined

JavaScript数据类型


    JavaScript有六种基本数据类型:string、boolean、number、null、undefined、symbol(es6新添加)
还有一种复杂数据类型:object


如果有发现错误,请在评论中告诉我~~~

原创粉丝点击