手机版

JavaScript字符串对象

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

JavaScript对象是一个复合值,它是属性或命名值的集合。使用“.”引用属性值。当属性值是函数时,它被称为方法。然后本文将解释JavaScript中的String对象。

在编写js代码时,我们经常会调用string的length属性、substring()方法、charAt()、indexOf()方法等等。这里需要注意的是,js中的字符串对象是不可变的。要通过拼接字符串创建字符串对象,建议通过[]拼接字符串。join()。

请参见下面的示例:

var str=' javascriptvar len=str.lengthvar substr=str.substring(2,len);那么一个问题来了,为什么字符串不是对象和属性?我们知道js中用" "或" "包装的东西叫做string。当字符串调用length属性或其方法时,JavaScript将通过调用new String(str)将字符串的值重新转换为对象,new String(str)继承字符串的方法并用于处理属性的引用。一旦引用完成,新创建的对象将被自动销毁。像字符串一样,数字和布尔类型也有自己的方法。通过新的Number()和新的Boolen()构造函数创建一个临时对象,这些方法的调用都来自这个临时对象。Null和undefined没有包装对象,访问它们的属性将导致类型错误。

现在让我们看一个模拟过程的例子:

var str=' teststr.length=10str.testStrLen=10var res=str.lengthconsole . log(RES);//输出4 res=str.testStrLenconsole . log(RES);//输出未定义当js运行到这段代码时,res的值为输出4。未定义。第二行代码试图覆盖字符串的原始属性长度,第三行代码添加了一个属性testStrLen。从最终的输出结果来看,并没有达到预期的效果。原因是第二行和第三行分别创建了一个临时字符串对象,然后销毁了临时对象。当该值由lenth或字符串中的lenth属性获取时,当试图读取testStrLen的值时,搜索相应的原型链,如果没有找到,将返回一个undefined。通过测试这段代码,它表明当读取一个字符串时,结果就像调用一个对象。但是,如果您尝试为其属性赋值,此操作将被忽略,并且修改仅发生在临时对象上,但不会继续保存此临时对象。

访问字符串、数字和布尔值属性时创建的临时对象称为包装对象,偶尔用于区分字符串值和字符串对象、数字和数值对象以及布尔和布尔对象。包装对象只被视为实现细节,没有特别注意。因为字符串、数字和布尔值的属性都是只读的,不能为它们定义新的属性,所以了解它们的不同是有帮助的。

需要注意的是,包装对象可以通过String()、Number()和Boolean()的构造函数来显示。

var str=新字符串(' test ');str.length=10str.testStrLen=10var res=str.lengthconsole . log(RES);//输出4 res=str.testStrLenconsole . log(RES);//输出10通过上面的代码,我们已经成功地将testStrLen属性添加到了string对象str中,但是还没有成功地覆盖原来的length属性。因此可以推断,读取时原型链的属性优先,如果找到就不进行下一次搜索。并且testStrLen的成功添加也可以帮助我们理解,当通过字符串直接追加属性时,会创建一个临时字符串对象。

然后让我们比较打包值和未打包值之间的相等性。

var str1=新字符串('测试');var str2=' testconsole。log(str 1==str 2);//真控制台。日志(str 1===str 2);//false var n1=新数字(1);var N2=1;控制台。对数(n1==N2);//真控制台。log(n1===N2);//false var B1=新布尔值(false);var b2=临时控制台。对数(B1==B2);//真控制台。log(B1===B2);//false由此我们可见Java脚本语言会在必要时将包装对象转换成原始值。"=="运算符将原始值和其包装对象视为相等。但是"==="全等运算符将它们视为不等。通过类型运算符可以看到原始值和其包装对象的不同。例如:

var str1=新字符串('测试');var str2=' testconsole。log(str 1==str 2);//真控制台。日志(str 1===str 2);//假控制台。日志(字符串1的类型);//对象控制台。日志(字符串2的类型);//字符串var n1=新数字(1);var N2=1;控制台。对数(n1==N2);//真控制台。log(n1===N2);//false console.log(类型为n1);//对象console.log(类型为N2);//number var B1=new Boolean(false);var b2=临时控制台。对数(B1==B2);//真控制台。log(B1===B2);//false console.log(类型为B1);//对象console.log(类型为B2);//布尔值常见的类型返回类型

射流研究…数据类型参考

https://开发者。Mozilla。org/zh-CN/docs/Web/JavaScript/Reference/Operators/类型

https://开发者。Mozilla。org/zh-CN/docs/Web/JavaScript/Data _ structures

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:JavaScript字符串对象是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。