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获取月的最后一天与JS得到一个月份最大天数的实例代码
Dec 16 Javascript
jquery validate demo 基础
Oct 29 Javascript
JS功能代码集锦
May 04 Javascript
深入理解JS addLoadEvent函数
May 20 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
Jun 02 Javascript
AngularJS ng-repeat数组有重复值的解决方法
Oct 23 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
Jan 10 Javascript
React中ES5与ES6写法的区别总结
Apr 21 Javascript
在 webpack 中使用 ECharts的实例详解
Feb 05 Javascript
JS实现模糊查询带下拉匹配效果
Jun 21 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
Aug 13 Javascript
浅谈vue 锚点指令v-anchor的使用
Nov 13 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中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
深入理解React高阶组件
2017/09/28 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
javascript实现下拉菜单效果
2021/02/09 Javascript
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
基于python3实现倒叙字符串
2020/02/18 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
2012/06/21 HTML / CSS
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
给医务人员表扬信
2014/01/12 职场文书
开工庆典邀请函范文
2014/01/16 职场文书
机关出纳岗位职责
2014/04/03 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书