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 相关文章推荐
javascript 写的一个简单的timer
Jul 30 Javascript
js document.write()使用介绍
Feb 21 Javascript
jquery选择器使用详解
Apr 08 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
Jan 08 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
Js实现简单的小球运动特效
Feb 18 Javascript
vue-dialog的弹出层组件
May 25 Javascript
详解Angular4中路由Router类的跳转navigate
Jun 09 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
AngularJS ionic手势事件的使用总结
Aug 09 Javascript
js合并两个数组生成合并后的key:value数组
May 09 Javascript
element多个表单校验的实现
May 27 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
ADODB类使用
2006/11/25 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
jquery动态添加option示例
2013/12/30 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
vue-axios使用详解
2017/05/10 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
Python struct.unpack
2008/09/06 Python
python获取当前日期和时间的方法
2015/04/30 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python中表示字符串的三种方法
2017/09/06 Python
Python输出各行命令详解
2018/02/01 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
机械专业应届生求职信
2013/12/12 职场文书
初中校园之声广播稿
2014/01/15 职场文书
导游词格式
2015/02/13 职场文书
辛亥革命观后感
2015/06/02 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs