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 相关文章推荐
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
Apr 06 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
Jun 23 Javascript
windows8.1+iis8.5下安装node.js开发环境
Dec 12 Javascript
JavaScript+CSS无限极分类效果完整实现方法
Dec 22 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
Angular2学习笔记——详解路由器模型(Router)
Dec 02 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
Dec 20 Javascript
vue项目环境变量配置的实现方法
Oct 12 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
Oct 30 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
Jan 18 jQuery
ES6 Set结构的应用实例分析
Jun 26 Javascript
基于react项目打包css引用路径错误解决方案
Oct 28 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 flock 文件锁详细介绍
2012/12/29 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
限制复选框的最大可选数
2006/07/01 Javascript
showModelessDialog()使用详解
2006/09/07 Javascript
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
python找出完数的方法
2018/11/12 Python
快速查找Python安装路径方法
2020/02/06 Python
python算的上脚本语言吗
2020/06/22 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
行政部工作岗位职责范本
2014/03/05 职场文书
家长写给孩子的评语
2014/04/18 职场文书
基层党员公开承诺书
2014/05/29 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
行政答辩状范文
2015/05/21 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL
vue2实现provide inject传递响应式
2021/05/21 Vue.js
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技