JavaScript 对象是一种复合值,是有属性或已命名值的集合。通过”.”来引用属性值。当属性值是一个函数的时候,称其为方法。那么本篇文章来讲解讲解JavaScript中的String对象。

我们在书写js代码时,经常调用字符串的length属性,substring()方法,charAt(),indexOf()方法等。这里需要特别说明一点是js中字符串对象也是不可变的。 通过+拼接字符串创建一个字符串对象,建议使用[].join()的方式拼接字符串。
看下面的例子:
var str="javascript"; var len=str.length; var substr=str.substring(2,len);
那么一个问题来了,字符串不是对象为什么又属性呢? 我们知道在js中使用”“或者”号包装起来的,我们都叫字符串。在字符串调用length属性或者其方法时, JavaScript就会隐士的将字符串的值通过调用new String(str)的方式转换为对象,这个对象继承了字符串的方法,并被用来处理属性的引用。一旦引用结束,这个新创建的对象就会被自动销毁。同字符串一样,数字和布尔类型也具有各自的方法,通过new Number()、new Boolen() 构造函数创建一个临时对象,这些方法的调用均是来自这个临时对象。null和undefined没有包装对象,访问它们的属性会造成一个类型错误。
现在来看一个模拟过程的例子:
var str = "test";
str.length = 10;
str.testStrLen = 10;
var res = str.length;
console.log(res);//输出4
res = str.testStrLen;
console.log(res);//输出undefined
当js运行到这段代码的时候,res的值输出4、undefined。其中第二行代码尝试覆盖字符串原本的属性length,第三个增加一个属性testStrLen。从最终输出的结果来看,并未达到预期的结果。原因是第二行和第三行都分别创建了一个临时字符串对象,随后又销毁了这个临时对象。当进行取值是lenth获取的还是字符串里面的lenth属性,当尝试读取testStrLen的值,通过对应的原型链进行查找,没有找到,就返回一个undefined。通过测试这段代码说明了在读取字符串的时候,表现出来的结果像对象调用一样。但如果试图给其属性赋值,则会忽略这个操作,修改只是发生在临时对象上,然而这个临时对象并未继续保存下来。
存取字符串、数字、布尔类型值的属性时创建的临时对象称作包装对象,是偶尔用来区分字符串值和字符串对象、数字和数值对象以及布尔值和布尔对象。包装对象只是被看做是一种实现细节,而不用特别的关注。由于字符串、数字和布尔值的属性都是只读的,并且不能给他们定义新属性,因此有助于明白它们是有区别的。
需要注意的是,可通过String()、Number()、Boolean()构造函数来显示包装对象。
var str = new String("test");
str.length = 10;
str.testStrLen = 10;
var res = str.length;
console.log(res);//输出4
res = str.testStrLen;
console.log(res); //输出10
通过上面代码我们成功给str这个字符串对象增加了testStrLen属性,但是并没有成功覆盖原来的length属性,也由此可以推出原型链读取时自身属性优先,找到就不进行下一步查找。而testStrLen的成功追加也可有助于我们理解通过字符串直接追加属性时创建了一个临时的字符串对象。
那我们来比较一下包装和不包装的值得的相等性。
var str1 = new String("test");
var str2 = "test";
console.log(str1 == str2);//true
console.log(str1 === str2);//false
var n1 = new Number(1);
var n2 = 1;
console.log(n1 == n2);//true
console.log(n1 === n2);//false
var b1 = new Boolean(false);
var b2 = false;
console.log(b1 == b2);//true
console.log(b1===b2);//false
由此我们可见JavaScript会在必要时将包装对象转换成原始值。“==”运算符将原始值和其包装对象视为相等。但是”===”全等运算符将它们视为不等。通过typeof运算符可以看到原始值和其包装对象的不同。
例如:
var str1 = new String("test");
var str2 = "test";
console.log(str1 == str2);//true
console.log(str1 === str2);//false
console.log(typeof str1); //object
console.log(typeof str2); //string
var n1 = new Number(1);
var n2 = 1;
console.log(n1 == n2);//true
console.log(n1 === n2);//false
console.log(typeof n1); //object
console.log(typeof n2); //number
var b1 = new Boolean(false);
var b2 = false;
console.log(b1 == b2);//true
console.log(b1 === b2);//false
console.log(typeof b1); //object
console.log(typeof b2); //boolean
常见的typeof返回类型
js数据类型 参考
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 字符串对象
# JavaScript字符串对象slice方法入门实例(用于字符串截取)
# JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
# JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符
# JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
# JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
# JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
# JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
# JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
# JavaScript字符串对象substr方法入门实例(用于截取字符串)
# JavaScript字符串对象substring方法入门实例(用于截取字符串)
# 布尔
# 就会
# 是一种
# 是有
# 运算符
# 这段
# 创建一个
# 的是
# 都是
# 是一个
# 来了
# 就不
# 布尔值
# 会在
# 也可
# 可以看到
# 给他们
# 一个问题
# 第三个
# 可通过
相关文章:
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何制作网站标识牌,动态网站如何制作(教程)?
Swift中循环语句中的转移语句 break 和 continue
如何在阿里云虚拟服务器快速搭建网站?
建站之星安装提示数据库无法连接如何解决?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
如何用美橙互联一键搭建多站合一网站?
深圳网站制作案例,网页的相关名词有哪些?
如何零基础在云服务器搭建WordPress站点?
建站之星在线版空间:自助建站+智能模板一键生成方案
存储型VPS适合搭建中小型网站吗?
想学网站制作怎么学,建立一个网站要花费多少?
魔方云NAT建站如何实现端口转发?
如何通过智能用户系统一键生成高效建站方案?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
平台云上自主建站:模板化设计与智能工具打造高效网站
如何通过云梦建站系统实现SEO快速优化?
已有域名能否直接搭建网站?
建站之星多图banner生成与模板自定义指南
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何快速建站并高效导出源代码?
如何高效搭建专业期货交易平台网站?
建站之星导航如何优化提升用户体验?
宁波免费建站如何选择可靠模板与平台?
制作网站怎么制作,*游戏网站怎么搭建?
手机网站制作与建设方案,手机网站如何建设?
如何在建站之星网店版论坛获取技术支持?
常州企业网站制作公司,全国继续教育网怎么登录?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何用搬瓦工VPS快速搭建个人网站?
三星网站视频制作教程下载,三星w23网页如何全屏?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
实例解析Array和String方法
网站app免费制作软件,能免费看各大网站视频的手机app?
h5在线制作网站电脑版下载,h5网页制作软件?
大型企业网站制作流程,做网站需要注册公司吗?
如何选购建站域名与空间?自助平台全解析
如何高效配置IIS服务器搭建网站?
Bpmn 2.0的XML文件怎么画流程图
如何配置FTP站点权限与安全设置?
建站之星24小时客服电话如何获取?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何基于PHP生成高效IDC网络公司建站源码?
C++时间戳转换成日期时间的步骤和示例代码
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
*请认真填写需求信息,我们会在24小时内与您取得联系。