我一直有个问题不明,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可以,恳请高人解惑,万谢,如果有什么理解错误还请指点
1 var str1=new String("aaa"); 2 3 var str2="aaa"; 4 5 typeof str1 //object 6 7 typeof str2 //string (5中基本类型之一 undefined null Boolean number string )
Javascript是一门弱语言 他没有语句块(block) 函数里声明的变量 在函数外也能引用 所以怪异之处 很正常
原因就是基本类型 引用类型的对象生存周期不一样
str1是引用类型,这个有点像面向对象的对象一样。
但是str2是基本类型,他创建的类型的对象,只存在这一行代码执行的瞬间,然后立即销毁。我们不能再运行时为基本类型添加属性和方法。
1 var str2="aaa"; 2 str2.name="aaa"; 3 alert(str2.name)//undefined
这里访问的str2的name属性不见了是因为第二行创建的对象在第三行访问时已经被销毁了
不知楼主明白了不 :)