js 中关于String对象的创建和销毁,何时创建,何时销毁

最近在看javascript权威指南,书上看到以下的代码:
vars='test';
s.len=4;
vart=s.len;
console.log(t);
这时候t报出undefined,为何啊?
胡子哥哥
浏览 581回答 2
2回答

蝴蝶刀刀

vars='test';//s是`string`类型,不是`object`s.len=4;//既然s不是object,怎么进行属性操作呢?这里其实就引申出了包装对象的概念,你可以近似理解为这一步等同于下面几步操作var_tmp_var_s=newString(s);//_tmp_var_s是`object`类型,可通过typeof()验证_tmp_var_s.len=4;delete_tmp_var_s;而vart=s.len;同样道理,s不是对象,没有len属性=>var_tmp_var_s1=newString(s);vart=_tmp_var_s1.len;//新创建的对象,可是没这个属性的,即undefineddelete_tmp_var_s1;既然包装对象用完就销毁,没啥实际意义,为啥还要存在?这是因为原始数据类型string,number等是没有属性的,只有object才有属性为了为原始数据类型提供属性操作,才引申出包装对象这个概念比如当我们取string类型变量的length属性也是隐含了这一步操作varstr='hello!';varlen=str.length;等效于varlen=newString(str).length;

红糖糍粑

找到答案了,vars='test'创建的只是一个字符串,而不是对象,所以s.len=4这时候赋值的对象属性是临时创建对象的属性,创建完就直接销毁了,到了vart=s.len时候就找不到这个属性了,所以显示是undefined。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript