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 相关文章推荐
使用UglifyJS合并/压缩JavaScript的方法
Mar 07 Javascript
10款非常有用的 Ajax 插件分享
Mar 14 Javascript
使用jquery读取html5 localstorage的值的方法
Jan 04 Javascript
js中settimeout方法加参数的使用实例
Feb 27 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
Jul 02 Javascript
jquery.serialize() 函数语法及简单实例
Jul 08 Javascript
JS基于正则表达式的替换操作(replace)用法示例
Apr 28 Javascript
bootstrap模态框远程示例代码分享
May 22 Javascript
javaScript 连接打印机,打印小票的实例
Dec 29 Javascript
js数组中去除重复值的几种方法
Aug 03 Javascript
vue.js封装switch开关组件的操作
Oct 26 Javascript
Vue解决移动端弹窗滚动穿透问题
Dec 15 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页面间传递参数实例代码
2008/06/05 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
javascript系统时间设置操作示例
2019/06/17 Javascript
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
python opencv如何实现图片绘制
2020/01/19 Python
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
英国最大的海报商店:GB Posters
2018/03/20 全球购物
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
初中生学习生活的自我评价
2013/11/20 职场文书
装饰资料员岗位职责
2013/12/30 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
市场营销计划书范文
2015/01/16 职场文书
校车司机安全责任书
2015/05/11 职场文书
正规欠条模板
2015/07/03 职场文书
结婚幸福感言
2015/08/01 职场文书
Python基础之pandas数据合并
2021/04/27 Python
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
Python如何加载模型并查看网络
2022/07/15 Python