JS 学习笔记--10---基本包装类型
练习中使用的浏览器是IE10,如果有什么错误或者不同意见,希望各位朋友能够指正,练习代码附在后面
1、基本包装类型:
首先是基本类型,但又是特殊的引用类型,因为他们可以调用系统的方法,这种类型就称为基本包装类型。主要有:Boolean,Number,String 三种。这些类型与其他引用类型相似,但同时也具有与各自基本引用类型相关的特殊行为。实际上,每当我们创建一个基本类型的时候,系统会在后台默认的创建一个基本包装类型的变量。
用String类型举例说明:用字面形式定义的String类型的变量box,如果给它添加属性和方法,然后打印出来,属性的输出结果是undefined,方法的运行结果是会报错。而用new String('c')方法定义的String变量[此时已经是object类型了],给它添加属性和方法都能够正常运行。但是这两种创建方式都能够调用系统的内置方法,通过 对象.方法(参数) 的形式调用,比如方法 box.substring(3)[后面解释],而这种形式的调用明显是一个对象的形式调用方法,故称其为基本包装类型。
这三种类型的变量用 new 运算符声明变量的时候,也可以给自己添加属性和方法,但是最好不要这样做,因为很可能搞不清楚到底是什么类型的变量,因为通过new运算符创建的变量通过typeof检测出来的结果是 object 类型的变量
2、Boolean 类型就两个值 true和false,基本上没有什么方法,和属性
3、Number 类型一些静态属性
静态属性:不需要对象就可以使用的属性,通过 类型名.属性名 访问(Number.MAX_VALUE);
Number 类型中包含的静态属性大概有:MAX_VALUE, MIN_VALUE, NEGATIVE_INFINITY, NaN, POSITIVE_INFINITY, 以及用来扩展方法和属性的 prototype等
4、Number 对象的一些方法
|
5、String 类型包含的三个属性
length:返回字符串的长度,也就是字符个数,汉字也只是算一个字符
constructor:返回创建String对象的方法:function String(){[native code]}
prototype:用于添加属性和方法来扩展字符串的定义
6、String对象包含的方法--通用方法
toString(),valueOf(),toLocaleString() 这三种方法前面已经用过,就不在解释了。
7、String 对象包含的方法--取字符的方法
str.charAt(3):获得字符串str中从0开始索引为3的字符
str.charCodeAt(3):获得字符串str中从0开始,索引为3的字符的ASCII编码
str[3]:获得字符串str中从0开始索引为1的字符,但是这种方式可能存在浏览器的兼容性问题
8、字符串操作方法
str.concat(str1,str2):和数组中的concat()方法是类似的,基于当前字符串,在后面添加上字符串str1,str2,组成一个新的字符串,并且返回,源字符串str不会改变,参数任意个
str.slice(n,m):从索引为n的字符开始截取,一直到索引为m但是不包括索引为m的字符为止,返回截取后的子字符串,源字符串str不变
str.substring(n,m):功能上面和slice相同,只是在有些参数方面处理不同
str.substr(n,m):同样是截取字符串,从索引为n的字符开始截取,截取的个数为m个,返回子字符串,原来的字符串不变。
|
JS中对substr()函数进行传递负数的时候可能会存在兼容性的问题,应注意使用
9、获取子字符串位置的方法 如果没有找到则均是返回 -1
str.indexOf(str2,num):从索引为num开始的地方向后查找字符串str1中包含的子字符串str2的位置,如果没有找到则返回 -1,找到了则返回字符str2的首字符的索引,起始位置包含索引为num的字符,如果省略num则默认的是0。注:找到一个立即返回
str.lastIndexOf(str2,num):和上面的功能是一样的,同样是以num为索引的字符开始查找,只不过是从后向前开始找,如果没有找到就返回-1,省略num,默认的是str.length-1开始
10、大小写转换的方法
str.toLowerCase(): 将字符串str中的所有英文字符转换成小写
str.toUpperCase(): 将字符串str中的所有的英文字符转换长大写
str.toLocaleLowerCase(): 转换成本地小写字符,我们国家基本上是一样的
str.toLocaleUpperCase(): 转换成本地大写字符
11、字符串的模式匹配方法 主要是针对正则表达式的
str.match(patt); str.search(patt); str.replace(patt,str2); str.split(patt);
12、其他方法:
String.fromCharCode('a'): 静态方法[能通过String类点出来的方法就是String类型的静态方法],返回字符在ASCII中的编码
str.localeCompare(str2): 比较字符串str1和字符串str2的大小,从第一个字符开始,一个一个字符开始比较,如果某一个字符不相同则返回,相同一直往后比较,直到不同或者字符串结束。返回的规则是,如果正在比较的字符,str中的字符的ASCII码值大于str2中的码制就返回正数,多数为 1,如果小于就返回负数,多数为 -1,如果相等就比较下一个字符,如果两个字符串相等就返回0.
13、练习代码:
/*
//字面量形式定义变量,添加属性和方法,不支持属性和方法
var box='abcdefg';
box.name='name';
box.run=function(){
alert('runFunction');
};
alert(box); //abcdefg
alert(box.name); //undefined
alert(typeof box); //string
alert(box.substring(3));//defg 调用系统内置函数,索引从0开始,从第三个字符开始截取字符串
//这种通过 对象.方法(参数) 调用形式明显是引用类型
alert(box.run()); //error:对象不支持方法 //new 方法定义变量,添加属性和方法,支持
var box=new String('abcdefg');
box.name='name';
box.run=function(){
return 'runFunction';
};
alert(box); //abcdefg
alert(box.name); //name
alert(typeof box); //object
alert(box.substring(3));//defg
alert(box.run()); //runFunction //上面两中方法中可以看出,不过是字面量形式还是new方法创建的变量都可以调用系统内置
//的函数 substring(),而且是通过 对象.方法(参数) 这种对象才具有的形式调用的方法
//故把这种本身是基本类型(字面量形式定义),但是又是特殊的引用类型,
//(因为他们可以调用系统内置函数),叫做基本包装类型 */ /* Number 类型
// 属性 对象.属性名
box.MAX_VALUE //静态属性,直接通过 类名.属性名
alert(Number.MAX_VALUE); // 获取Numebr类型的最大值
alert(Number.MIN_VALUE); // 获取Numebr类型的最小值
alert(Number.NaN); // 获取NaN
alert(Number.NEGATIVE_INFINITY); //获取负无穷
alert(Number.POSITIVE_INFINITY); //获取正无穷 // Number 对象的方法
var box=10000.3456;
alert(box.toString()); //10000.3456
alert(box.toLocaleString());//10,000.346 用逗号按照每三位隔开显示,并且小数点后面只是按照四舍五入保存三位
alert(box.toFixed(3)); //10000.346 转换成字符串,并且按照四舍五入的形式保存3位小数
alert(10000.34.toFixed(3)); //10000.340 小数位数不足在后面填0 // 以科学计算法来保存指定的小数点后面的位数,位数是指转换成科学计算法后小数点后位数
alert(box.toExponential()); //1.00003456e+4 转换成字符串,以科学计数法的形式显示
alert(box.toExponential(2));//1.00e+4 保存小数点后面指定的位数,以科学计数法显示
alert(typeof box.toExponential(2)); //string
alert(0.003.toExponential(3)); //3.000e+-3 //toPrecision(5);方法,是按照科学计算法或者点形式保存数据,按照参数保留有效位数
//括号中的参数是指保留的有效数的位数,如果整数部分位数大于参数,则以科学计算法表示
//如果整数部分小于有效位数,小数点后面按照有效位数进行四舍五入进行取数
//如果是小于一的小数,同样在后面补0凑齐有效位数的个数
var box=10000.3456;
alert(box.toPrecision()); //10000.3456
alert(box.toPrecision(3)); //1.00e+4
alert(typeof box.toPrecision(2)); //string
alert(box.toPrecision(8)); //10000.346
alert(box.toPrecision(9)); //10000.3456
alert(0.003.toPrecision(4)); //0.003000 */ /* String 类型
// 三个属性 length constructor prototype
var box='abc';
alert(box.length); //3 返回字符串的长度
alert(box.constructor); // 返回创建String对象的函数 function String(){[native code]} // 基本方法 toString() valueOf() toLocaleString() 这些方法都返回字符串的基本值
var box='abcdefg';
alert(box.toString()); //abcdefg
alert(box.toLocaleString());//abcdefg
alert(box.valueOf()); //abcdefg // 字符方法 charAt() charCodeAt()
var str="ab_cd_123";
alert(str.charAt(3)); // c 返回从0开始,索引为 3 的字符
alert(str.charCodeAt(3)); // 99 返回从0开始,索引为 3 的字符的ASCII 的编码
alert(str[1]); //b 返回字符串中索引为 1 的字符
alert('我司字符串'.charAt(-1)); //超出索引范围,返回为空字符串 // 字符串操作方法 concat() slice() substring() substr()
//str.concat(str2,str3...); 和数组中的concat()方法是一样的,基于当前字符串,拼接后返回一个新的字符串
var str='abc';
alert(str.concat('123','abc')); //abc123abc
alert(str); //abc // slice()方法和substring()方法在所有参数为正数的情况下是一样的,基于元字符串进行截取返回
var str='abc123def';
alert(str.slice(3)); //123def 从索引为3的字符开始截取,一直到字符串结束
alert(str.slice(3,5)) //12 从索引为3的字符开始截取,一直到索引为5结束,不包裹索引为5的字符
alert(str.slice(3,5,'qq')); //12 多个参数时,同样只是认前两个
alert(str.slice(3,'y')); //第二个参数为非数值时返回为0
alert(str.slice(3,5.7)); //第二个数为浮点数的时候,对数进行取整
alert(str.slice(3,'7')); //123d 将数值字符串转换成了数值
alert(str.slice(3,1)); //第二个参数小于第一个参数的时候,返回为空
alert(str.slice(3,-1)); //123de 参数为负数时,计算方式为:str.length+(-1)等价于(3,8)
alert(str.slice(-5)); //23abc
alert(str.slice(-5,7)); //(4,7)23a
alert(str); //abc123def alert(str.substring(3)) //123def
alert(str.substring(3,5)); //12
alert(str.substring(3,5,'qq')); //12
alert(str.substring(5,2)); //c12 第二个参数小于第一个参数的时候,将两个参数进行交换
alert(str.substring(3,'y')); //第二个参数为非数值时,返回为0,然和第一个参数换位
alert(str.substring(3,'7')); //123d 将数值字符串转换成了数值
alert(str.substring(3,5.9)); //12 第二个数为浮点数的时候,对数进行取整
alert(str.substring(3,-1)); //abc 参数为负数时,直接返回为0,然后将较小的数提前
alert(str.substring(-5,3)); //abc
alert(str.substring(-5)); //abc123abc 参数为负,处理为0,返回全部
alert(str.substring(-5,7)); //abc123a 第一个参数为负,当做0处理,截取到索引为七但不包含七的字符 alert(str); //abc123def //str.substr(m,n); 从索引为m出开始,截取n个字符,返回,
var str='abc123def';
alert(str.substr(3)); //123def 只有一个参数,一直截取到结尾
alert(str.substr(3,2)); //12 从索引为3开始截取两个字符,参数二为截取字符的个数
alert(str.substr(3,'3')); //123 数值型字符串,会自动的转换成数值
alert(str.substr(3,'r')); // 空 非数值型字符串,转换成数值为0,截取0个字符
alert(str.substr(3,4.6)); // 123d 小数时,舍去小数,只取整数位
alert(str.substr(3,-4)); // 空 负数的时候,直接返回为0,不交换位置 (3,0)
alert(str.substr(3,2,'gg')); //12 以后的参数都不认,弱类型语言,参数个数可以不匹配
alert(str.substr(-5)); //23def 从最后一个字符开始向前数第5个字符处开始截取,直到结束
alert(str.substr(-5,3)); //23d 从倒数第5个字符开始向后截取3个字符 alert(str); //abc123def // 获取字符位置的函数 indexOf() lastIndexOf()
//indexOf('c'); 返回字符串中从做到右第一个字符 c 的索引,如果没有找到就返回-1
var str='abc123defabc';
alert(str.indexOf('a')); //0
alert(str.indexOf('ab')); //0
alert(str.indexOf('ac')); //-1
alert(str.indexOf('a',3)); //9 从索引为3的字符开始向后查找子字符串 "a",包括第三个字符 //lastIndexOf('c'); 返回字符串从右到做第一个字符 c 的索引,如果没有找到就返回-1
var str='abc123defabc';
alert(str.lastIndexOf('a')); //9
alert(str.lastIndexOf('ab')); //9
alert(str.lastIndexOf('ac')); //-1
alert(str.lastIndexOf('a',9)); //9 从索引为9的字符处开始向前查找子字符串“a”,包括第九个字符 // 练习 找到字符串中包含全部的字符 L
var str='aL123LdelfaLbc';
var arr=[];
var box=str.indexOf('L'); //先获取一次,进行判断是否存在字符 L
while(box>-1){ //如果值大于-1,说明当前还存在字符 L
arr.push(box); //存入数组 等价于 arr[arr.length]=box;
box=box+1; //改变下次查找的位置,因为box处字符也算在内,故要加1
box=str.indexOf('L',box);
}
alert(arr); //1,5,11 默认是区分大小写的 // toLowerCase() toUpperCase() 将字符串中的字符转换成小写或者大写
var str='abcABC123';
alert(str.toLowerCase()); //abcabc123
alert(str.toUpperCase()); //ABCABC123
str='abcABc但';
alert(str.toLowerCase()); //abcabc但
alert(str.toUpperCase()); //ABCABc但 // toLocaleLowerCase() toLocaleUpperCase() 转换成本地大小写字符,基本上看不出效果
var str='abcABC';
alert(str.toLocaleLowerCase()); //abcabc
alert(str.toLocaleUpperCase()); //ABCABC // 模式匹配方法 search(pattern),march(pattern),replace(pattern),split(pattern)
// 这些方法主要是针对的正则表达式 // 静态方法 fromCharCode(''); 输出对应ascii值对应的字符
alert(String.fromCharCode(66)); //B // 比较两个字符串的大小 str.localeCompare(st); 先比较第一个字符,如果相等在比较后面字符
//如果字符串中的字符在ASCII表中比参数字符串中对应索引处的字符编码大,就返回正数,一般为 1
//如果小 就返回为负数,一般为 -1
//如果相等就继续比较下一个字符,直到比完为止,如果还是相等就返回 0
var str="dog";
alert(str.localeCompare('abc')); //1 str 字符串大于子字符串 abc
alert(str.localeCompare('fff')); //1
alert(str.localeCompare('dog')); //0
*/
JS 学习笔记--10---基本包装类型的更多相关文章
- JS高级程序设计学习笔记之基本包装类型
概述 基本类型:string.boolean.number 每当读取一个基本类型的值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据. 使用new操作符创建的 ...
- JS学习笔记 等于和包装对象
严格等于 a===b 首先判断两边数据的类型,若类型不同,返回false. 若类型相同(1.2和1.2,字符串相等指内容和长度都是一样的),返回true null===null undefined== ...
- javascript学习笔记 - 引用类型 基本包装类型
六 基本包装类型 Boolean,Number,String 这三个引用类型亦称为基本包装类型,与基本的数据类型boolean,number,string相关联.为了方便操作这些基本类型的数据. 引用 ...
- JS学习笔记10之Math对象
-->Math对象 常用属性和方法-->使用Math对象制作相应的效果 Math对象用于执行数学任务 一.Math对象的属性: 二.Math对象的方法: 三.常用属性和方法: Math.P ...
- WebGL three.js学习笔记 6种类型的纹理介绍及应用
WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...
- 【转】Backbone.js学习笔记(二)细说MVC
文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Bac ...
- JS 学习笔记--9---变量-作用域-内存相关
JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的 ...
- WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法
WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
随机推荐
- IIS安装错误导致网站访问不了
如下图,网站正常但就是访问不了,原因是IIS配置不正确,把ASP.NET4.5等相关勾选上就可以了,不要用默认的勾选,要自己手动勾选.
- kettle的hello world
本篇介绍使用kettle的一个最简单的例子,可以初步了解下转换. 需求是这样的: 存在一个本地csv文件,文件的内容如下 现在需要将csv中的数据保存到本地的文本文件中 1.创建一个转换,并且重命名 ...
- Lucene全文检索框架
1.什么时Lucene? 是一个全文搜索框架,而不是应用产品,他只是一种工具让你能实现某些产品,并不像www.baidu.com拿来就能用 是apache组织的一个用java实现的全文搜索引擎的开源项 ...
- DTD 知识归纳总结
一:在xml文件中引用一个dtd规则. <!DOCTYPE 根元素 [元素声明]> 二: xml文档中中包含的内容模块 元素:元素是 XML 以及 HTML 文档的主要构建模块. 属性:属 ...
- 【转】MYISAM表批量压缩
关于对MYISAM表的压缩,可以使用myisampack和myisamchk完成(myisampack完之后必须进行myisamchk才能使用压缩后的表,而且是只读的), 其详细地用法可以参考官方文档 ...
- U盘启动
2014.4.3修改 其实用U盘制作系统也可以下载一个软碟通UltraISO,就可以很方便的制作. ----以前的版本 用U盘装系统,很方便快捷,下面这个网站介绍的比较详细,于是自己整理了一下,作为收 ...
- ASP.NET MVC5学习笔记之Controller执行ControllerDescriptor和ActionDescriptor
一. ControllerDescriptor说明 ControllerDescriptor是一个抽象类,它定义的接口代码如下: public abstract class ControllerDes ...
- delphi 2010是动画GIF的支持方法
下面delphi 2010是动画GIF的支持方法: 1.在窗体上放一个Image1控件.注意:这时设置其Picture属性,加载一幅动画GIF是不会动画显示的. 2.在窗体的FormCreate事 ...
- MongoDB探索之路(一)——入门
1.MongoDB和传统关系型数据库的比较 2.面向文档的 NoSQL 数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能. 3.MongoDB可以作为日志分 ...
- 5.python的字符串
在前面提起过字符串这个词,现在就来学习什么是字符串. 首先,字符串是python内置的数据类型,其特点是用引号引起来,并且可以是使用单引号('字符串'),双引号("字符串"),三个 ...