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 UI-Draggable 参数集合
Jan 10 Javascript
Js+Flash实现访问剪切板操作
Nov 20 Javascript
关于jquery的多个选择器的使用示例
Oct 18 Javascript
js实现非常简单的焦点图切换特效实例
May 07 Javascript
win7下安装配置node.js+express开发环境
Dec 06 Javascript
headjs实现网站并行加载但顺序执行JS
Nov 29 Javascript
js实现滑动到页面底部自动加载更多功能
Feb 15 Javascript
详解vue.js的事件处理器v-on:click
Jun 27 Javascript
小程序开发基础之view视图容器
Aug 21 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
Sep 21 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
Nov 11 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
一个用于网络的工具函数库
2006/10/09 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
基于js disabled="false"不起作用的解决办法
2013/06/26 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
2015/12/14 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
Python管理Windows服务小脚本
2018/03/12 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
python中的decimal类型转换实例详解
2019/06/26 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
python 元组和列表的区别
2020/12/30 Python
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
商务会议邀请函
2014/01/09 职场文书
物理教学随笔感言
2014/02/22 职场文书
终止劳动合同协议书
2014/04/14 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
活动总结书怎么写
2015/05/11 职场文书
python解决12306登录验证码的实现
2021/04/18 Python