本文解析 JavaScript 中字符串等基本类型为何能调用方法。核心机制在于自动装箱:当访问属性或方法时,引擎会临时创建包装对象,执行操作后销毁。这解释了为何字符串可调用方法,以及 == 与 === 在比较原始值与包装对象时的差异。
String
JavaScript 数据类型与对象方法的关系
在 JavaScript 中,数据类型主要分为基本类型(包括 number、string、boolean、null 和 undefined)以及引用类型 Object。
通常我们认为,只有对象才具备属性和方法,基本类型似乎不具备这一特征。
var str="hello,world";
var s=str.subString(,);//ell
alert(typeof(str)+":"+typeof(s));//string:string
从上述返回类型来看,变量 str 的类型显然为 string。
接下来观察如何使用全局对象声明一个字符串。
var c=new String(str);
alert(typeof(c));//Object<br>alert(c.toString());//hello,world
字符串方法的自动装箱机制
由此我们可以推断,当处理字符串时,
JavaScript 编译器会先将字符串变量 str 通过 new String(str) 转换为对象,随后调用相应的处理方法,最后通过 toString() 方法返回字符串结果。
临时对象的创建与销毁
临时对象的创建和销毁
通过上述实例可知,JavaScript 在处理字符串、数字和布尔值时,会创建临时对象,并在操作完成后将其销毁。
var a = "hello,world";
var c = new String(a); //创建了string 对象。
c.len = ;
alert(typeof (c));//object;
alert(c.len);//
///////////////////////////////////////////////////////////////////////
a.len=;
alert(a.len);//undefined
访问 a.len 时编译器未报错,正是因为创建的临时对象在执行操作后已被销毁。
相等运算符的比较差异
==和===
a==c ;//true;
a===c;//false; 字符串和object是不等的。
以上所述是小编给大家介绍的JavaScript必知必会(三) String .的方法来自何方的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持!