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 相关文章推荐
来自qq的javascript面试题
Jul 24 Javascript
myFocus slide3D v1.1.0 使用方法与下载
Jan 12 Javascript
编写针对IE的JS代码两种编写方法
Jan 30 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
Oct 17 Javascript
javascript中使用正则表达式清理table样式的代码
Apr 01 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
Jul 27 Javascript
JavaScript利用闭包实现模块化
Jan 13 Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
Nov 04 Javascript
jQuery实现点击滚动到指定元素上的方法分析
Mar 19 jQuery
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
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 adodb连接mssql解决乱码问题
2009/06/12 PHP
php创建sprite
2014/02/11 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
初学python数组的处理代码
2011/01/04 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
利用python爬取有道词典的方法
2020/12/08 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
一些PHP的面试题
2015/05/06 面试题
小学生自我评价范例
2013/09/24 职场文书
光电信息专业应届生求职信
2013/10/07 职场文书
会议开场欢迎词
2014/01/15 职场文书
简历里的自我评价范文
2014/02/24 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
地道战观后感400字
2015/06/04 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android
如何使用SQL Server语句创建表
2022/04/12 SQL Server
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫
Windows server 2012搭建FTP服务器
2022/04/29 Servers
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS