大家好,我是IT修真院北京分院第22期的学员杨纲,一枚正直纯洁善良的WEB前端程序员。
1.背景介绍
我们目前对Javascript多少都有一些了解和使用。其中最基础的,就是js的数据类型,分为两大块,一个是基本数据类型,包括:undefined、null、boolean、number、string等;一个是引用数据类型,包括object、array、Date、RegExp等。在引用类型中,还有三个特殊的引用类型,和基本数据类型相似,我们接下来来认识一下:boolean、number、string。
2.知识剖析
2.1 特殊的引用类型之string
如同上边代码所示,字符串是一个基本数据值。但是,我们知道基本数据类型不是对象,在逻辑上来讲,它不应该有方法,但是上边的substring()是如何实现的呢?详细剖析的话,我们可以把它分成一下这种步骤:
通过上一页的代码细节的展示,我们可以看出,基本类型的字符串就变成了和对象一样。这就引入了基本包装类型的概念:每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。
作为特殊的引用类型,其与引用类型的的主要区别在于对象的生存期上。使用new或者其他简写的方法创建引用类型的实例,在执行六离开当前作用域之前都一直保存在内存中。自动创建的基本包装类型的对象,则只存在于一行代码执行的瞬间,然后立即被销毁了。这就意味着,不能在运行时为基本类型值添加属性和方法。
String类型在ECMAScript中提供了一些方法,用于对字符串进行解析和操作。
字符串的方法:
concat()用于对一个或者多个字符串进行拼接显示,生成新的字符串,不会影响原有字符串。
//字符串方法varsvalue ="Hello";varresult= svalue.concat("Da Wa"); console.log(result); console.log(svalue);varb = svalue + 'ErWa';
还有三种创建新字符串的方法:slice()、substr()、substring()。
var a ="tianqingle";console.log(a.slice(3));console.log(a.substring(3));console.log(a.substr(3));console.log(a.slice(3,7));console.log(a.substring(3,7));console.log(a.substr(3,7));
2.4 特殊的引用类型之Boolean
varaobj = newBoolean(false);varresult= aobj &&true;console.log(result);varbvalue =false;result= bvalue &&true;console.log(result);
在布尔值运算中,fals&&true返回false,一假全假;布尔表达式中所有对象会返回true。
2.3 特殊的引用类型之Number
Number类型是与数字值对应的引用类型。
var num = new Number(100); console.log(num.toString()); console.log(num.toLocaleString()); console.log(num.valueOf()); console.log(num.toFixed(3)); console.log(num.toExponential(3)); console.log(num.toPrecision(2));//支持1到21位小数
与Boolean类型一样,同样不建议显式实例化Number类型,原因同Boolean类型一样,在使用valueOf()和instanceof()方法时会出现容易让人误解的结果,从而造成混乱。
3.常见问题
问题: 如何分割一个很长的字符串?
3.常见问题
问题: 如何分割一个很长的字符串?
3.常见问题
问题: 如何分割一个很长的字符串?
4.解决方案
通过字符串模式匹配的方法。
var s ="天上的云,地上的水,水清了,就可以低头看见天上的云!"; var b = s.split(',');var c = s.split(',',2);console.log(b);console.log(c);
5.编码实战
参看上边简单的demo演示,暂无更多demo!
6.扩展思考
问题: 如何替换子字符串的内容?
这里使用了replace()的方法:
varh="cat, bat, sat, fat"; console.log(h.replace("at","ond")); console.log(h.replace(/at/g,"end"));
7.参考文献
参考一:JavaScript高级程序设计
8.更多讨论
讨论点:大家对于基本包装类型还有哪些认识,分享一下?
鸣谢
感谢大家观看
BY : 高雪峰
问:基本包装类型有哪些:
答:string,object,array,null,number,,
问:array和object有什么区别?
答:array有序,object无序,
问:split怎么用?
答:详见demo
ppt链接:https://ptteng.github.io/PPT/PPT/js-01-JS%20basic%20package%20typeyg.html#/
视频链接:链接: https://pan.baidu.com/s/1hsEJjDi 密码: g68m
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
------------------------------------------------------------------------------------------------------------------------
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !