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汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
Dec 20 Javascript
jquery用offset()方法获得元素的xy坐标
Sep 06 Javascript
js控制文本框只输入数字和小数点的方法
Mar 10 Javascript
Javascript中的arguments与重载介绍
Mar 15 Javascript
javascript实现textarea中tab键的缩排处理方法
Jun 26 Javascript
JavaScript中ES6字符串扩展方法
Aug 26 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
Nov 09 Javascript
JS使用正则实现去掉字符串左右空格的方法
Dec 27 Javascript
vue 1.0 结合animate.css定义动画效果
Jul 11 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
js中的this的指向问题详解
Aug 29 Javascript
解决layui-open关闭自身窗口的问题
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 常用字符串函数总结
2008/03/15 PHP
file_get_contents("php://input", "r")实例介绍
2013/07/01 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
javascript Base类 包含基本的方法
2009/07/22 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
vue实现购物车的监听
2020/04/20 Javascript
[01:52]DOTA2完美大师赛Vega战队趣味视频——kpii老师小课堂
2017/11/25 DOTA
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
详解python调用cmd命令三种方法
2019/07/08 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
python实现吃苹果小游戏
2020/03/21 Python
keras多显卡训练方式
2020/06/10 Python
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
应用服务器有那些
2012/01/19 面试题
施工人员岗位职责
2013/12/12 职场文书
给全校老师的建议书
2014/03/13 职场文书
元宵晚会主持词
2014/03/25 职场文书
活动总结报告范文
2014/05/04 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android