我一直有个问题不明,var str1=new String("aaa");var str2="aaa"; String构造函数这三者之间的关系还不是很明了呢,根据面向对象的原理,我发现str1和str2都可以看成String的实例对象(因为通过alert(str2.constructor),显示的是String构造函数,说明str2是通过String函数构造而来的对象),但是str2既然是对象为啥不能通过str2.name="aaa";alert(str2.name);得到name属性呢,而str1可以,恳请大叔解惑,万谢,如果有什么理解错误还请指点
5 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
var str1=new String("aaa"); 其实有两个操作,第一、创建一个String对象,第二给str1 赋值。
var str2="aaa" 只是给一个变量赋值,str2不是对象,只是变量
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
哦 原来前者是var str1=new String("aaa");
alter(typeof str1) //输出object
var str2=new String();
alter(typeof str2) //输出object
str2="aaa";
alter(typeof str2) //输出string
object属于对象 可以用name属性 输出aaa
所以string没name属性 是underfined
添加回答
举报
0/150
提交
取消