美文网首页
string()和new string()的区别

string()和new string()的区别

作者: dayindayout | 来源:发表于2018-03-27 12:14 被阅读0次

    javascript中的变量在内存中的存储有两种形式,值类型存储和引用类型存储,值类型存储是直接在地址中存值的,而常用的数组(其实也属于对象)和对象也有字面量,不过是引用存储,即内存中存储的是对应数据的地址。

    var str1=String('str1');

    str1.aa='hello';

    console.log('str1.aa:',str1.aa);//str1.aa: undefined

    var str2=new String('str2');

    str2.aa='world';

    console.log('str2.aa:',str2.aa);//str2.aa: world

    *Undefined:已声明但没有赋值的变量,或一个并不存在的对象属性(typeof 返回的是字符串);

    *null:空对象,期望此处引用对象(instanceof 一般是判断引用类型,对象实例);


    内存分配:

    原始值和引用值存储在内存中的位置分别为栈和堆。原始值是存储在栈中的简单数据段,他们的值直接存储在变量访问的位置。引用值是存储在堆中的对象。存储在栈中的值是一个指针,指向存储在堆中的实际对象。栈的优势就是存取速度比堆要快,仅次于直接位于CPU中的寄存器,但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,垃圾收集器会自动地收走这些不再使用的数据,但是缺点是由于在运行时动态分配内存,所以存取速度较慢。


    相关文章

      网友评论

          本文标题:string()和new string()的区别

          本文链接:https://www.haomeiwen.com/subject/tppjcftx.html