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实现拖拽 闭包函数详细介绍
Nov 25 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
Dec 08 Javascript
js输入框邮箱自动提示功能代码实现
Dec 10 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
Feb 08 Javascript
jquery提交form表单简单示例分享
Mar 03 Javascript
JavaScript中Form表单技术汇总(推荐)
Jun 26 Javascript
利用JQuery直接调用asp.net后台的简单方法
Oct 27 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
Javascript es7中比较实用的两个方法示例
Jul 21 Javascript
JavaScript实现简单图片轮播效果
Aug 21 Javascript
用JS实现选项卡
Mar 23 Javascript
微信小程序input抖动问题的修复方法
Mar 03 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打开和关闭文件操作函数总结
2014/11/18 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
js实现图片无缝滚动
2015/12/23 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
Python中的包和模块实例
2014/11/22 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
python Django的web开发实例(入门)
2019/07/31 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
领导班子三严三实对照检查材料
2014/09/25 职场文书
民事和解协议书格式
2014/11/29 职场文书
三好学生事迹材料
2014/12/24 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
2015年英语教学工作总结
2015/05/25 职场文书