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 相关文章推荐
Sample script that displays all of the users in a given SQL Server DB
Jun 16 Javascript
[Web]防止用户复制页面内容和另存页面的方法
Feb 06 Javascript
event对象的方法 兼容多浏览器
Jun 27 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
Oct 29 Javascript
一个JavaScript函数把URL参数解析成Json对象
Sep 24 Javascript
使用JavaScript链式编程实现模拟Jquery函数
Dec 21 Javascript
js实现可得到不同颜色值的颜色选择器实例
Feb 28 Javascript
jQuery Chart图表制作组件Highcharts用法详解
Jun 01 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
Mar 06 Javascript
javascript+html5+css3自定义提示窗口
Jun 21 Javascript
Vue瀑布流插件的使用示例
Sep 19 Javascript
js通过canvas生成图片缩略图
Oct 02 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
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
JavaScript delete操作符应用实例
2009/01/13 Javascript
Javascript select下拉框操作常用方法
2009/11/09 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
Python 正则表达式操作指南
2009/05/04 Python
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
Python+django实现文件上传
2016/01/17 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
python用插值法绘制平滑曲线
2021/02/19 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
详解python 中in 的 用法
2019/12/12 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
SQL数据库笔试题
2016/03/08 面试题
女方回门宴答谢词
2014/01/14 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
美术毕业生求职信
2014/02/25 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
四年级学生评语大全
2014/04/21 职场文书
小学生综合素质评语
2014/04/23 职场文书
环保倡议书50字
2014/05/15 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
开学典礼致辞
2015/07/29 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android