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、练习代码:
1 /* 2 //字面量形式定义变量,添加属性和方法,不支持属性和方法 3 var box='abcdefg'; 4 box.name='name'; 5 box.run=function(){ 6 alert('runFunction'); 7 }; 8 alert(box); //abcdefg 9 alert(box.name); //undefined 10 alert(typeof box); //string 11 alert(box.substring(3));//defg 调用系统内置函数,索引从0开始,从第三个字符开始截取字符串 12 //这种通过 对象.方法(参数) 调用形式明显是引用类型 13 alert(box.run()); //error:对象不支持方法 14 15 //new 方法定义变量,添加属性和方法,支持 16 var box=new String('abcdefg'); 17 box.name='name'; 18 box.run=function(){ 19 return 'runFunction'; 20 }; 21 alert(box); //abcdefg 22 alert(box.name); //name 23 alert(typeof box); //object 24 alert(box.substring(3));//defg 25 alert(box.run()); //runFunction 26 27 28 //上面两中方法中可以看出,不过是字面量形式还是new方法创建的变量都可以调用系统内置 29 //的函数 substring(),而且是通过 对象.方法(参数) 这种对象才具有的形式调用的方法 30 //故把这种本身是基本类型(字面量形式定义),但是又是特殊的引用类型, 31 //(因为他们可以调用系统内置函数),叫做基本包装类型 32 33 */ 34 35 36 /* Number 类型 37 // 属性 对象.属性名 38 box.MAX_VALUE 39 40 //静态属性,直接通过 类名.属性名 41 alert(Number.MAX_VALUE); // 获取Numebr类型的最大值 42 alert(Number.MIN_VALUE); // 获取Numebr类型的最小值 43 alert(Number.NaN); // 获取NaN 44 alert(Number.NEGATIVE_INFINITY); //获取负无穷 45 alert(Number.POSITIVE_INFINITY); //获取正无穷 46 47 // Number 对象的方法 48 var box=10000.3456; 49 alert(box.toString()); //10000.3456 50 alert(box.toLocaleString());//10,000.346 用逗号按照每三位隔开显示,并且小数点后面只是按照四舍五入保存三位 51 alert(box.toFixed(3)); //10000.346 转换成字符串,并且按照四舍五入的形式保存3位小数 52 alert(10000.34.toFixed(3)); //10000.340 小数位数不足在后面填0 53 54 // 以科学计算法来保存指定的小数点后面的位数,位数是指转换成科学计算法后小数点后位数 55 alert(box.toExponential()); //1.00003456e+4 转换成字符串,以科学计数法的形式显示 56 alert(box.toExponential(2));//1.00e+4 保存小数点后面指定的位数,以科学计数法显示 57 alert(typeof box.toExponential(2)); //string 58 alert(0.003.toExponential(3)); //3.000e+-3 59 60 //toPrecision(5);方法,是按照科学计算法或者点形式保存数据,按照参数保留有效位数 61 //括号中的参数是指保留的有效数的位数,如果整数部分位数大于参数,则以科学计算法表示 62 //如果整数部分小于有效位数,小数点后面按照有效位数进行四舍五入进行取数 63 //如果是小于一的小数,同样在后面补0凑齐有效位数的个数 64 var box=10000.3456; 65 alert(box.toPrecision()); //10000.3456 66 alert(box.toPrecision(3)); //1.00e+4 67 alert(typeof box.toPrecision(2)); //string 68 alert(box.toPrecision(8)); //10000.346 69 alert(box.toPrecision(9)); //10000.3456 70 alert(0.003.toPrecision(4)); //0.003000 71 72 */ 73 74 75 /* String 类型 76 // 三个属性 length constructor prototype 77 var box='abc'; 78 alert(box.length); //3 返回字符串的长度 79 alert(box.constructor); // 返回创建String对象的函数 function String(){[native code]} 80 81 // 基本方法 toString() valueOf() toLocaleString() 这些方法都返回字符串的基本值 82 var box='abcdefg'; 83 alert(box.toString()); //abcdefg 84 alert(box.toLocaleString());//abcdefg 85 alert(box.valueOf()); //abcdefg 86 87 // 字符方法 charAt() charCodeAt() 88 var str="ab_cd_123"; 89 alert(str.charAt(3)); // c 返回从0开始,索引为 3 的字符 90 alert(str.charCodeAt(3)); // 99 返回从0开始,索引为 3 的字符的ASCII 的编码 91 alert(str[1]); //b 返回字符串中索引为 1 的字符 92 alert('我司字符串'.charAt(-1)); //超出索引范围,返回为空字符串 93 94 // 字符串操作方法 concat() slice() substring() substr() 95 //str.concat(str2,str3...); 和数组中的concat()方法是一样的,基于当前字符串,拼接后返回一个新的字符串 96 var str='abc'; 97 alert(str.concat('123','abc')); //abc123abc 98 alert(str); //abc 99 100 // slice()方法和substring()方法在所有参数为正数的情况下是一样的,基于元字符串进行截取返回 101 var str='abc123def'; 102 alert(str.slice(3)); //123def 从索引为3的字符开始截取,一直到字符串结束 103 alert(str.slice(3,5)) //12 从索引为3的字符开始截取,一直到索引为5结束,不包裹索引为5的字符 104 alert(str.slice(3,5,'qq')); //12 多个参数时,同样只是认前两个 105 alert(str.slice(3,'y')); //第二个参数为非数值时返回为0 106 alert(str.slice(3,5.7)); //第二个数为浮点数的时候,对数进行取整 107 alert(str.slice(3,'7')); //123d 将数值字符串转换成了数值 108 alert(str.slice(3,1)); //第二个参数小于第一个参数的时候,返回为空 109 alert(str.slice(3,-1)); //123de 参数为负数时,计算方式为:str.length+(-1)等价于(3,8) 110 alert(str.slice(-5)); //23abc 111 alert(str.slice(-5,7)); //(4,7)23a 112 alert(str); //abc123def 113 114 alert(str.substring(3)) //123def 115 alert(str.substring(3,5)); //12 116 alert(str.substring(3,5,'qq')); //12 117 alert(str.substring(5,2)); //c12 第二个参数小于第一个参数的时候,将两个参数进行交换 118 alert(str.substring(3,'y')); //第二个参数为非数值时,返回为0,然和第一个参数换位 119 alert(str.substring(3,'7')); //123d 将数值字符串转换成了数值 120 alert(str.substring(3,5.9)); //12 第二个数为浮点数的时候,对数进行取整 121 alert(str.substring(3,-1)); //abc 参数为负数时,直接返回为0,然后将较小的数提前 122 alert(str.substring(-5,3)); //abc 123 alert(str.substring(-5)); //abc123abc 参数为负,处理为0,返回全部 124 alert(str.substring(-5,7)); //abc123a 第一个参数为负,当做0处理,截取到索引为七但不包含七的字符 125 126 alert(str); //abc123def 127 128 //str.substr(m,n); 从索引为m出开始,截取n个字符,返回, 129 var str='abc123def'; 130 alert(str.substr(3)); //123def 只有一个参数,一直截取到结尾 131 alert(str.substr(3,2)); //12 从索引为3开始截取两个字符,参数二为截取字符的个数 132 alert(str.substr(3,'3')); //123 数值型字符串,会自动的转换成数值 133 alert(str.substr(3,'r')); // 空 非数值型字符串,转换成数值为0,截取0个字符 134 alert(str.substr(3,4.6)); // 123d 小数时,舍去小数,只取整数位 135 alert(str.substr(3,-4)); // 空 负数的时候,直接返回为0,不交换位置 (3,0) 136 alert(str.substr(3,2,'gg')); //12 以后的参数都不认,弱类型语言,参数个数可以不匹配 137 alert(str.substr(-5)); //23def 从最后一个字符开始向前数第5个字符处开始截取,直到结束 138 alert(str.substr(-5,3)); //23d 从倒数第5个字符开始向后截取3个字符 139 140 alert(str); //abc123def 141 142 143 // 获取字符位置的函数 indexOf() lastIndexOf() 144 //indexOf('c'); 返回字符串中从做到右第一个字符 c 的索引,如果没有找到就返回-1 145 var str='abc123defabc'; 146 alert(str.indexOf('a')); //0 147 alert(str.indexOf('ab')); //0 148 alert(str.indexOf('ac')); //-1 149 alert(str.indexOf('a',3)); //9 从索引为3的字符开始向后查找子字符串 "a",包括第三个字符 150 151 //lastIndexOf('c'); 返回字符串从右到做第一个字符 c 的索引,如果没有找到就返回-1 152 var str='abc123defabc'; 153 alert(str.lastIndexOf('a')); //9 154 alert(str.lastIndexOf('ab')); //9 155 alert(str.lastIndexOf('ac')); //-1 156 alert(str.lastIndexOf('a',9)); //9 从索引为9的字符处开始向前查找子字符串“a”,包括第九个字符 157 158 // 练习 找到字符串中包含全部的字符 L 159 var str='aL123LdelfaLbc'; 160 var arr=[]; 161 var box=str.indexOf('L'); //先获取一次,进行判断是否存在字符 L 162 while(box>-1){ //如果值大于-1,说明当前还存在字符 L 163 arr.push(box); //存入数组 等价于 arr[arr.length]=box; 164 box=box+1; //改变下次查找的位置,因为box处字符也算在内,故要加1 165 box=str.indexOf('L',box); 166 } 167 alert(arr); //1,5,11 默认是区分大小写的 168 169 170 // toLowerCase() toUpperCase() 将字符串中的字符转换成小写或者大写 171 var str='abcABC123'; 172 alert(str.toLowerCase()); //abcabc123 173 alert(str.toUpperCase()); //ABCABC123 174 str='abcABc但'; 175 alert(str.toLowerCase()); //abcabc但 176 alert(str.toUpperCase()); //ABCABc但 177 178 // toLocaleLowerCase() toLocaleUpperCase() 转换成本地大小写字符,基本上看不出效果 179 var str='abcABC'; 180 alert(str.toLocaleLowerCase()); //abcabc 181 alert(str.toLocaleUpperCase()); //ABCABC 182 183 // 模式匹配方法 search(pattern),march(pattern),replace(pattern),split(pattern) 184 // 这些方法主要是针对的正则表达式 185 186 // 静态方法 fromCharCode(''); 输出对应ascii值对应的字符 187 alert(String.fromCharCode(66)); //B 188 189 // 比较两个字符串的大小 str.localeCompare(st); 先比较第一个字符,如果相等在比较后面字符 190 //如果字符串中的字符在ASCII表中比参数字符串中对应索引处的字符编码大,就返回正数,一般为 1 191 //如果小 就返回为负数,一般为 -1 192 //如果相等就继续比较下一个字符,直到比完为止,如果还是相等就返回 0 193 var str="dog"; 194 alert(str.localeCompare('abc')); //1 str 字符串大于子字符串 abc 195 alert(str.localeCompare('fff')); //1 196 alert(str.localeCompare('dog')); //0 197 */
View Code
转载于:https://www.cnblogs.com/qigang/p/3518475.html
JS 学习笔记--10---基本包装类型相关推荐
- JS学习笔记 等于和包装对象
严格等于 a===b 首先判断两边数据的类型,若类型不同,返回false. 若类型相同(1.2和1.2,字符串相等指内容和长度都是一样的),返回true null===null undefined== ...
- Auto.js学习笔记10:实例化自定义对象,在子线程使用JSON.stringify()方法导致报错(已解决)
申明本人使用的autojs是4.1.1版本 JSON.stringify()使用导致autojs软件直接奔溃退出. 报错核心局部代码 var sendInfoObj = { //对象areaCode ...
- WebGL three.js学习笔记 6种类型的纹理介绍及应用
WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...
- JS学习笔记(五)函数类型、箭头函数、arguments参数、标签函数
JS学习笔记(五) 本系列更多文章,可以查看专栏 JS学习笔记 文章目录 JS学习笔记(五) 一.函数 1. 函数定义 2. 方法( 对象 + 函数 ) 二.函数参数及返回值 1. 传递原始类型参数 ...
- 基于jquery的插件turn.js学习笔记
基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...
- Vue.js学习笔记 2022 04 17
Vue.js学习笔记 1 Vue.js基础 Vue.js介绍 vuejs 渐进式 JavaScript 框架 Vue.js 如何应用 1 在普通html项目中,引入VUE.JS Hb 的项目 生成的 ...
- javascript从入门到跑路-----小文的js学习笔记目录
** javascript从入门到跑路-----小文的js学习笔记(1)---------script.alert.document.write() 和 console.log 标签 javascri ...
- Wow.js学习笔记
Wow.js学习笔记 前期准备 注意:通过引入cdn的树懒,注意版本问题(小白我就是因为失败就去乖乖下载wow.js本地文件) 1.wow.js 因依赖于animate.css,首先在头部引用anim ...
- 千锋Node.js学习笔记
千锋Node.js学习笔记 文章目录 千锋Node.js学习笔记 写在前面 1. 认识Node.js 2. NVM 3. NPM 4. NRM 5. NPX 6. 模块/包与CommonJS 7. 常 ...
- thinkphp学习笔记10—看不懂的路由规则
原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...
最新文章
- 2022-2028年中国ITO薄膜行业市场全景调查及投资前景趋势报告
- 深入分析Linux内核源码oss.org.cn/kernel-book/
- BZOJ1196: [HNOI2006]公路修建问题
- 浅析Codewarrior、IAR和Keil MDK三大开发环境优缺点
- 使用jquery调试ajax接口
- http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1895 二分
- (Ⅰ)基于Hexo+GitHub Page搭建博客,绑定域名及备份
- LeetCode OJ - Recover Binary Search Tree
- 同名字的数值求和插入行_SUM求和函数的运用,这些EXCEL表格技能你必须知道,让你事半功倍...
- python与java的默认入参(重载)
- springboot+mybatis+shiro+beetl前端做 服务监控页面
- PowerShell: 如何使用powershell处理Excel
- ip地址切换器如何切换电脑或者手机上网ip使用教程
- 定投的收益率怎么计算
- 年末大盘点 2008十大最受欢迎的装机软件
- ODATA 后台报错,添加message
- ssh 远程脚本执行 java: command not found
- 163点游戏python算法
- 接口请求报错 504 Gateway Time-out
- wps怎么把字缩到最小_wps文字怎么把空行缩小