本文实例讲述了JavaScript引用类型之基本包装类型。分享给大家供大家参考,具体如下:
为了操作基本类型值,ECDMAScript提供了3个特殊的引用类型——基本包装类型Boolean、Number和String。每当读取一个基本类型值时,后台会创建一个对应的基本包装类型的对象。
var str = "Hello world"; var substr = str.substring();
等价于
var str = new String("Hello world");//创建String类型的实例 var substr = str.substring();//在实例上调用substring()方法 str = null;//销毁实例
基本包装类型是特殊的引用类型,引用类型与基本包装类型的区别如下:
(1)对象的生存期
使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前一直存在于内存中,而自动创建的基本包装类型的对象,只存在于代码执行瞬间,然后立即被销毁,也就是说,不能在运行时为基本包装类型添加属性和方法。
var str1 = "Hello world"; var str2 = new String("Hello World"); str1.life = 20; str2.life = 20; alert(str1.life);//undefined alert(str2.life);//20
(2)instanceof操作符测试结果
使用instanceof
操作符测试基本包装类型实例会返回true,测试基本类型值会返回false。
var str1 = "Hello World"; var str2 = new String("Hello world"); alert(str1 instanceof String);//false alert(str2 instanceof String);//true
可以显式地调用Boolean、Number、String来创建基本包装类型的对象,但尽可能不要这样做,因为这样不易区分是在处理基本类型还是引用类型。
Object构造函数会根据传入值的类型返回相应基本包装类型的实例。
var str = new String("Hello world"); alert(str instanceof String);//true var num = new Number(16); alert(num instanceof Number);//true var bool = new Boolean(true); alert(bool instanceof Boolean);//true
对基本包装类型的实例调用typeOf()
方法会返回"Object",实例变量中保存的是基本类型值。
var str = new String("Hello world"); alert(typeof str);//object var num = new Number(16); alert(typeof num);//object var boolean = new Boolean(true); alert(typeof boolean);//object
使用new
操作符调用基本包装类型的构造函数,与直接调用同名的转型函数是不同的,变量中保存的是基本包装类型的实例。
var str = String("Hello world"); alert(typeof str);//string var num = Number(16); alert(typeof num);//number var bool = Boolean(true); alert(typeof bool);//boolean
所有基本包装类型的对象在转换为布尔类型时值都是true。
var boolean1 = new Boolean(false); alert(boolean1);//false alert(boolean1 && true);//true var boolean2 = new Boolean(0); alert(boolean2);//false alert(boolean2 && true);//true var boolean3 = new Boolean(""); alert(boolean3);//false alert(boolean3 && true);//true
1、Boolean类型
var boolean = new Boolean(true);
Boolean类型的实例重写了valueOf()
方法,返回对应的基本类型值true和false;重写了toString()
方法,返回字符串"true"和"false"。
2、Number类型
var num = new Number(16);
Number类型也重写了继承的valueOf()
、toString()
、toLocaleString()
方法,重写后的valueOf()
方法返回对应的基本类型值,另外两个方法返回对应的字符串。可以为toString()方法传递一个表示基数的参数。
除了继承的方法外,Number还提供了将数值格式化为字符串的方法:
(1)toFixed()
方法:传入的参数为小数位数,返回数值的字符串表示。
(2)toExponential()
方法:传入的参数为小数位数,返回以指数表示法表示的数值的字符串形式。
(3)toPrecision()
方法:传入的参数为数值的所有数组位数,不包含指数部分,返回指定格式的字符串表示。
3、String类型
var str = new String("Hello world");
String类型继承的valueOf()
、toString()
、toLocaleString()
方法返回对象所表示的字符串值。
(1)String类型实例的属性。
length属性:表示字符串包含的字符个数。
(2)String类型实例的方法。
---字符方法
不会修改字符串本身的值,只是返回子字符串,对原始字符串没有影响。
1)charAt()
方法:传入的参数为基于0的字符位置,返回给定位置的字符。
2)charCodeAt()
方法:传入的参数为基于0的字符位置,返回给定位置的字符编码。
---字符串操作方法
1)concat()
方法:传入的参数为任意多个字符串,返回拼接得到的字符串。
2)substr()
、slice()
、substring()
方法:三个基于子字符串创建新字符串的方法,传入一或两个参数,返回子字符串。第一个参数指定子字符串的开始位置,第二个参数可选,slice()
和substring()
的第二个参数指定子字符串的结束位置,substr()的第二个参数指定子字符串的长度。当传入的参数是负数时,slice()
方法会将负值与字符串长度相加,substr()
方法将第一个负值加上字符串长度,而第二个负值转换为0,substring()
方法将所有负值都转换为0。
---字符串位置方法
搜索给定的子字符串,返回子字符串的位置,未搜索到则返回-1。第一个参数指定搜索的子字符串,第二个参数可选,指定搜索开始的位置。---
1)indexOf()
方法:从头开始向后搜索。
2)lastIndexOf()
方法:从后开始向前搜索。
---trim()
方法
创建一个字符串的副本,删除前缀和后缀的空格,返回新字符串,原始字符串不变。
---字符串大小写转换方法
1)toLowerCase()
方法:通用的小写转换方法。
2)toUpperCase()
方法:通用的大写转换方法。
3)toLocaleLowerCase()
方法:针对特定地区的小写转换方法。
4)toLocaleUpperCase()
方法:针对特定地区的大写转换方法。
---字符串模式匹配方法
1)match()
方法:在字符串上调用match()方法,与在RegExp实例上调用exec()方法相同。接收1个参数——正则表达式或RegExp对象。返回一个数组,数组的第一项是与整个模式匹配的字符串,之后的每一项是与各个子模式匹配的字符串。
2)search()
方法:从头开始向后查找。接收1个参数——正则表达式或RegExp对象。返回第一个匹配项的索引,未找到匹配结果则返回-1。
3)replace()
方法:替换字符串。接收2个参数——第一个参数是一个正则表达式或RegExp对象或字符串(字符串不会被转换为正则表达式),第二个参数是一个字符串或函数。若第一个参数是字符串,则只会替换第一个子字符串,若想替换所以子字符串,需要使用带有g标志的RegExp对象。
a、第二个参数为字符串时,使用特殊的字符序列,将正则表达式操作得到的值插入到结果字符串中。
var str = "cat, fat, eat"; var result = str.replace(/(.at)/g, "my($1)"); alert(result);//my(cat), my(fat), my(eat)
b、第二个参数为函数时,可以实现更为精细的替换操作。
在只有一个匹配项(即与模式匹配的字符串)时,向函数传递3个参数——模式的匹配性、模式匹配项在字符串中的位置和原始字符串。在正则表达式中定义了多个子模式的情况下,向函数传递的参数依次是模式的匹配项、第一个子模式的匹配项、第二个子模式的匹配项、......、模式匹配项在字符串中的位置和原始字符串。返回替换文本。
var str = "<a href = \"test.jsp\">link</a>"; var result = str.replace(/[<>"&]/g, function(match, positon, originalStr) { switch(match) { case "<": return "<"; case ">": return ">"; case "&": return "&"; case "\"": return """; } }); alert(result);//<a href = "test.jsp">link</a>
4)split()
方法:第一个参数为分隔符(字符串或RegExp对象,字符串不会被转换为正则表达式),第二个参数可选,指定返回的字符串数组的大小。返回分割后的字符串数组。
var strs1 = str.split("|", 2);//["cat","fat","eat"] var str = "cat|fat|eat"; var strs1 = str.split("|"); alert(strs1);//cat,fat,eat var strs2 = str.split("|", 2); alert(strs2);//cat,fat var strs3 = str.split(/[^\|]+/); alert(strs3);//,|,|,
strs3的分隔符为“cat”、"fat"、“eat”,因此返回的数组第一项和最后一项时空字符串。
---localeCompare()方法:
比较两个字符串,若字符串在字母表中应该排列在字符串参数之前,返回一个负数(大多数情况是-1),若在之后,返回一个正数(大多数情况是1),若相等,返回0。
alert("world".localeCompare("hello"));//1
---fromCharCode()方法:
String类的静态方法,接收一或多个字符编码,转换为字符串,与charCodeAt()
是相反的操作。
alert(String.fromCharCode(104, 101, 108, 108, 111));//"hello"
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript常用函数技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript页面元素操作技巧总结》及《JavaScript操作DOM技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- [音展纪念碟]2006年《TAA台湾第十六届国际HI-ENDHI-FI音响展》2cd[WAV]
- 中国音乐地图之听见西藏山歌牧歌酒歌2020[WAV分轨]
- 王宏伟2017-永远的红飘带[太平洋影音][WAV+CUE]
- 费翔.1997-NOW现在【第一中国】【WAV+CUE】
- 新格合唱团.1981-我唱你和2辑(滚石新格民歌系列)【新格】【WAV+CUE】
- 陈柏宇.2011-QUINQUENNIUM【SONY】【WAV+CUE】
- 雨果唱片-《金唛系列-蔷薇依韵琼瑶》WAV
- 陈百强《凝望(2012华纳LPCD45限量版)[DMI]》[WAV整轨]
- 模拟之声慢刻CD《徐小凤45周年》[德国母带][低速原抓WAV+CUE]
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- 《王菲 单曲合集》[FlAC/分轨][520MB]
- 《费玉清 原味再现 水长流》[WAV+CUE][430MB]
- 群星.1992-畅销榜老歌金曲10CD【风格】【WAV+CUE】
- 孙悦.2024-时光音乐会【金蜂】【WAV+CUE】