javascript基本类型详解


Posted in Javascript onNovember 28, 2014

js中一共5个原始值,6个typeof能判断的,9个原生的内置的构造函数。

这569,构成了js语言的基础。

5个原始值是:数字,字符,布尔,null,undefined

typeof能判断:数字,字符,布尔,object,function,undefined。 注意null和数组,tyopeof都输出object。

      typeof不能区分出数组和对象,如何判断类型呢?使用Object.prototype.toString.apply()。

      if(value&&typeof value ==='object'&&value.constructor === Array)

     上面的检测如果在不同帧和窗口创建的数组,会给出false,window对象不一样了.

      可靠的方法是if(Object.prototype.toString.apply(value)==="[object  Array]")

    arguments 数组不是一个数组,他只是一个有着length成员属性的对象。

如下面例子所示 arguments不是普通的array

var a = function (){

      var b = Object.prototype.toString.apply(arguments);

      console.log(b);
}

a();//输出[object Arguments]
var a = function (){

      var c = [];

      var b = Object.prototype.toString.apply(c);

      console.log(b);
}

a();//输出[object Array]

instanceof是如何判断是否实例

prototype里面的属性有constructor.

默认的prototype属性是一个object对象,可以设置为任何复杂值,忽略设置为原始值.

虽然他尽是一个对象,但他是特殊性的,圆形链将每个实例都链接至其构造函数的prototype属性。实例与构造函数的 prototype属性之间有一个隐蔽的链接,这就是实例的__proto__。同时实例的constructor属性是通过构造函数prototype的constructor拿到的。

但是要保留constructor,这样可以让new的实例有constructor的属性,也可以使用instanceof来判断。

var Foo = function(){}
Foo.prototype={constructor:Foo}
var FooInstance = new Foo;
FooInstance.__proto__=== Foo.prototype;//true
FooInstance.constructor === Foo; //true

实际上instanceof判断不是依据constructor,而是依据原型链判断,如下面例子

 var Foo = function(){};

 Foo.prototype={};

 var FooInstance = {};

 FooInstance.__proto__=Foo.prototype;

 console.log(FooInstance instanceof Foo);//true

使用原始值,不使用构造函数

哪些值算是false:false,"",null,0,-0,NaN,undefined,这些算是false其他都是true

但是请注意下面这个例子

var a = Boolean(false);

        var b = new Boolean(""); 

        if (a ){console.log(a);}//无法输出

        if (b ){console.log(b);}//Boolean {[[PrimitiveValue]]: false} new 一个相当于一个对象了,就不是false

上面的文章理论性稍强了一些,不过这些都是构成javascript语言的基础,一定要了解清楚才行。

Javascript 相关文章推荐
用js自动判断浏览器分辨率的代码
Jan 28 Javascript
B/S开发中常用javaScript技术与代码
Mar 09 Javascript
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
Dec 02 Javascript
在多个页面使用同一个HTML片段《续》
Mar 04 Javascript
javascript怎么禁用浏览器后退按钮
Mar 27 Javascript
JavaScript中的数学运算介绍
Dec 29 Javascript
JS解决iframe之间通信和自适应高度的问题
Aug 24 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
Sep 24 Javascript
微信小程序 教程之模块化
Oct 17 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
Feb 19 Javascript
vue项目中应用ueditor自定义上传按钮功能
Apr 27 Javascript
在Angular中使用JWT认证方法示例
Sep 10 Javascript
javascript中数组array及string的方法总结
Nov 28 #Javascript
20条学习javascript的编程规范的建议
Nov 28 #Javascript
20个实用的JavaScript技巧分享
Nov 28 #Javascript
js获取浏览器基本信息大全
Nov 27 #Javascript
jQuery实现多按钮单击变色
Nov 27 #Javascript
jQuery的ready方法详解
Nov 27 #Javascript
javascript 面向对象封装与继承
Nov 27 #Javascript
You might like
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
学习ExtJS form布局
2009/10/08 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
Python3遍历目录树实现方法
2015/05/22 Python
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
python生成圆形图片的方法
2020/03/25 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
详解Python的三种可变参数
2019/05/08 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
啤酒销售实习自我鉴定
2013/09/24 职场文书
恐龙的灭绝教学反思
2014/02/12 职场文书
大学生职业规划书的范本
2014/02/18 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
网络营销策划方案
2014/06/04 职场文书
英语教师个人工作总结
2015/02/09 职场文书
电影建国大业观后感
2015/06/01 职场文书
我的1919观后感
2015/06/03 职场文书
成人成长感言如何写?
2019/08/16 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技