JavaScript总结(二)
JavaScript的数据类型
✍ 原始数据类型值:
JavaScript有5中原始数据类型,通过调用typeof运算符返回值查看变量类型:
➣ Undefined ➔ 'undefined';
Undefined(未定义)类型只有一个值,即undefined。当声明的变量未初始化时,该变量的默认值是undefined。
➣ Boolean ➔ 'boolean';
Boolean(布尔)类型是JavaScript中最常用的类型之一。它有两个值true和false;
➣ Number ➔ 'number';
JavaScript中定义最特殊的类型是Number型,这种类型既可以表示32位整型,也可以表示64位浮点数。直接输入的(而不是从另一个变量访问的)任何数字都被看做Number字面量。
➣ String ➔ 'string';
String类型的独特之处在于它是唯一没有固定大小的原始类型。可以用字符串存储0或更多的Unicode字符,由16位整数表示(Unicode是一种国际字符集)。
➣Null ➔ 'object'(引用类型返回的也是object);
只有一个专用值unll,即它的字面量。值undefined实际上是从值null派生来的,因此JavaScript把它们定义为相等的;
null == undefined //返回true
❋ JavaScript中实现数据类型转换
转化为字符串值:JavaScript定义所有对象都有toString()方法,无论它是伪对象,还是真的对象。使用toString()方法对数据进行类型转换的结果由变量的值决定。
例如:
var test = false; //test的字面量是Boolean类型,值为false test.toString(); //返回的值为'false' var numInt = 10; //numInt是Number类型,值为10 var numfloat = 10.0; //numfloat是Number类型,值为10.0 numInt.toString(); //返回的值为'10' numfloat.toString(); //返回的值为'10';如果numfloat的字面量是10.1,那么返回的值为'10.1'
对于非数字的原始值,JavaScript提供了两种转换成数字的方法,即parseInt()和parseFloat(),前者把值转换成整型,后者把值转换成浮点数。只有对String类型调用这些方法,它们才能正确运行。对其他类型返回的都是NaN。
var iNum1 = parseInt('1234blasd'); //返回1234 var iNum2 = parseInt('22.5'); //返回22 var iNum3 = parseInt('0xA'); //返回10 var fNum1 = parseFloat('1234absa'); //返回1234.0 var fNum2 = vaparseFloat('22.3214'); //返回22.3214 var fNum3 = paeseFloat('0xA'); //返回NaN
也可以强制转换:
➣ Boolean(value)——把给定的值转化为Boolean型;
➣ Number(value)——把给定的值转换成字符串;
➣ String(value)——把给定的值转换成字符串;
用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。
❋ Boolean型转换:
方法 |
结果 |
备注 |
Boolean("") |
false |
空字符串 |
Boolean('hi') |
true |
非空字符串 |
Boolean(100) |
true |
非0数字 |
Boolean(null) |
false |
null |
Boolean(0) |
false |
0 |
Boolean(new Object()) |
true |
对象 |
❋ Boolean型转换:
方法 |
结果 |
Number(false) |
0 |
Number(true) |
1 |
Number(undefined) |
NaN |
Number(null) |
0 |
Number('2.2.5') |
NaN |
Number('1.5') |
1.5 |
Number(new Object()) |
NaN |
❋ String型转换:
可以把任何值转换成字符串;
✍ 引用数据类型值
JavaScript库中提供了大量封装好的对象给我们使用,同时我们还可以创建自定义对象。可以分为三种类型:
➣ 原生对象:
是由JavaScript所提供的、独立于宿主环境(即浏览器)的对象。简单点说,就是在ECMA-262标准中定义的对象;
➣ 内置对象:
内置对象JavaScript中提供的、独立于宿主环境的对象,这些对象在JavaScript程序执行时就已经存在。内置对象实际上也是原生对象的一种,但是与原生对象不同的是,内置对象不需要显式地初始化,因为它已经初始化了,ECMA-262标准中只定义了两个内置对象:Global和Math;
➣ 宿主对象:
宿主对象指与宿主环境(即浏览器)有关的对象。所有的BOM和DOM对象都是宿主对象。
我们可以用下面的表来记忆JS的基本数据类型和Java中数据类型的关系
Java类型 |
对应JS类型 |
说明 |
byte |
number |
Java包装器:Byte,父类:Number |
short |
Java包装器:Short,父类:Number |
|
int |
Java包装器:Integer,父类:Number |
|
long |
Java包装器:Long,父类:Number |
|
float |
Java包装器:Float,父类:Number |
|
double |
Java包装器:Double,父类:Number |
|
char |
string |
Java包装器:Charset,父类:Object |
string |
Java中string不是基本类型,父类:Object |
|
boolean |
boolean |
Java包装器:Boolean,父类:Object |
✍ Object类:
JavaScript中的所有类都是由Object类来继承的,Object类中的属性和方法都会出现在其他对象中。
➣ Object类具有的属性:
Constructor——对创建对象的函数的引用(指针)。对于Object类,该指针指向原始的object()函数。
➣ Object类具有的方法:
hasOwnProperty(property)——判断对象是否具有某个特定的属性。必须用字符串指定该属性。
isPrototypeOf(object)——判断该对象是否为另一个对象的原型。
propertyIsEnumerable(property)——判断给定的属性是否可以为for..in语句进行枚举。
toString()——返回对象的原始字符串表示,对于Object类,ECMA-262标准没有定义这个值,所以不同的JavaScript实现具有不同的值。
valueOf()——返回最适合该对象的原始值。对于许多类,该方法返回的值都与toString()的返回值形同。
✍ 原始数据类型包装器类:
JavaScript中的Boolean、Number和String类分别是JavaScript原始数据类型Boolean、Number和String的包装类。这些对象在JavaScript实际编程中很少使用,所以我们最好还是使用原始值。Boolean、Number和String的所有属性和方法都可以应用在原始值上,因为他们是伪对象。
✍ Array类
可以创建数组!创建的几种方式如下
var iArray1 = new Array(); iArray1[0] = 'a'; //给数组的下标0的内存空间赋值为'a' iArray1[1] = 'b'; //给数组的下标1的内存空间赋值为'b' iArray1[2] = 'c'; //给数组的下标2的内存空间赋值为'c' var iArray2 = new Array(20); //该数组长度为20 var iArray3 = new Array('a','b','c') //数组共三个值,按顺序分别是'a','b','c';
✍ Date类
Date 对象用于处理日期和时间。
创建Date对象语法:
var myDate = new Date();//Date对象会自动把当前日期和时间保存为其初始值
属性 |
描述 |
constructor |
返回对创建此对象的 Date 函数的引用 |
prototype |
使您有能力向对象添加属性和方法 |
✍ Global类:
Global类是JavaScript中最特别的对象,它不需要声明和初始化。
✍ instanceof运算符:
在使用typeof运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,他都会返回”object”;instanceof是由ECMAscript引入java运算符;instanceof运算符与typeof运算符相识,用于识别正在处理的对象的类型。与typeof方法不同的是,instanceof方法要求开发者明确地确认对象为某特定类型。
JavaScript总结(二)的更多相关文章
- 学习javascript数据结构(二)——链表
前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...
- 初探JavaScript(二)——JS如何动态操控HTML
除去五一三天,我已经和<JavaScript Dom编程艺术>磨合了六天,第一印象很好.慢慢的,我发现这是一块排骨,除了肉还有骨头.遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次 ...
- 从头开始学JavaScript (十二)——Array类型
原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...
- 使用JavaScript生成二维码教程-附qrcodejs中文文档
使用javascript生成二维码 依赖jquery 需要使用到的库 https://github.com/davidshimjs/qrcodejs DIV <div id="qrco ...
- 同事问如何判断同花顺,我用javascript的二维数组写了个简易demo
有个前同事在群里问如何判断是否为同花顺我用javascript的二维数组写了个简易demo. <!DOCTYPE html> <html> <body> <s ...
- 2、JavaScript 基础二 (从零学习JavaScript)
11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...
- Javascript面向对象二
Javascript面向对象二 可以通过指定原型属性来对所有的对象指定属性, Object.prototype.name="zhangsan"; Object.prototype. ...
- QrCode C#生成二维码 及JavaScript生成二维码
一 C#的二维码 示例: class Program { static void Main(string[] args) { QrEncoder qrEncoder = new QrEncode ...
- 一篇文章图文并茂地带你轻松学完 JavaScript 设计模式(二)
JavaScript 设计模式(二) 本篇文章是 JavaScript 设计模式的第二篇文章,如果没有看过我上篇文章的读者,可以先看完 上篇文章 后再看这篇文章,当然两篇文章并没有过多的依赖性. 5. ...
- Javascript生成二维码(QR)
网络上已经有非常多的二维码编码和解码工具和代码,很多都是服务器端的,也就是说需要一台服务器才能提供二维码的生成.本着对服务器性能的考虑,这种小事情都让服务器去做,感觉对不住服务器,尤其是对于大流量的网 ...
随机推荐
- 数据库对比:选择MariaDB还是MySQL?
作者 | EverSQL 译者 | 无明 这篇文章的目的主要是比较 MySQL 和 MariaDB 之间的主要相似点和不同点.我们将从性能.安全性和主要功能方面对这两个数据库展开对比,并列出在选择数据 ...
- EXC_BAD_ACCESS错误
EXC_BAD_ACCESS错误 一直都是使用ARC开发,咋就莫名其妙的出现这种EXC_BAD_ACCESS错误. 一直都是是怀疑在block中有着特殊处理,导致了使用时出现了这种错误,查找了好久.. ...
- 铁乐学python_day29_模块与包学习4
大部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ 编译python文件 编译python文件是为了提高加载模块的速度,强调强调强调:提高的是加载速度而绝非运行速度 ...
- ZT 安卓手机的安全性 prepare for Q
如何增强安卓手机的安全性?安卓的安全性太低了!!! 众所周知,安卓手机是非常容易破解的,刷过机的人都知道,不管你之前在手机怎么设置密码,只要进入recovery清空使用记录,手机就会恢复出厂设置,到时 ...
- echo,die(),print(),print_r(),var_dump()的区别
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的值(如int,string) 例子 输出 3 ...
- Hibernate核心对象
1.Configuration Configuration 类负责管理Hibernate的配置信息.它包括如下内容: Hibernate运行的底层信息:数据库的URL.用户名.密码.JDBC驱动类,数 ...
- Python的网络编程 Socket编程
Socket是进程间通信的一种方式,与其他进程间通信的一个主要不同是:能实现不同主机间的进程间通信,网络上各种各样的服务大多都是基于Socket来完成通信的,要解决网络上两台主机间的通信问题,首先要唯 ...
- 使用 libffi 实现 AOP
核心还是利用oc消息的查找派发机制,进行类结构的动态修改,用新函数替换老函数,然后再调用老函数. 前言 众所周知,使用runtime的提供的接口,我们可以设定原方法的IMP,或交换原方法和目标 ...
- MySql+Memcached架构的问题
Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现. Memcached服务器使用基于Slab的内存管 ...
- BZOJ4241:历史研究(回滚莫队)
Description IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. ...