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 Date对象使用总结
May 14 Javascript
javascript 数据类型转换(parseInt,parseFloat)
Jul 20 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
Dec 03 Javascript
原生JS实现表单checkbook获取已选择的值
Jul 21 Javascript
jquery动态增加删除表格行的小例子
Nov 14 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
Dec 23 Javascript
jQuery实现菜单式图片滑动切换
Mar 14 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
Nov 17 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
JS创建对象的写法示例
Nov 04 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
Dec 14 Javascript
JS拖拽排序插件Sortable.js用法实例分析
Feb 20 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
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
改变 Python 中线程执行顺序的方法
2020/09/24 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
毕业生找工作推荐信
2013/11/21 职场文书
优秀的茶餐厅创业计划书
2014/01/03 职场文书
日语专业个人求职信范文
2014/02/02 职场文书
开学典礼决心书
2014/03/11 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
2014年招生工作总结
2014/11/26 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技