9/11包装对象

JavaScript对象是一种复合值:它是属性或已命名值得集合。通过“.”符号来引用属性值。

                 当属性值是一个函数时候,称奇为方法。通过O.m()来调用对象O中的方法。

字符串也有属性和方法:、

                      Var s=“hello world!”;                                       //一个字符串

                      Var word=s.substring(s.index0f("")+1,s.lenght);   //使用字符串的属性 

可通过String(),Number()或Boolean()构造函数来显示创建包装对象:

        var s="text",n=1,b=ture;    //一个字符串、数字和布尔值

        var S=new  String(s);         //一个字符串对象

        var N=new  Number(n);      //一个数值对象

        var B=new  Number(b);      //一个布尔对象

3.7 不可改变的原始值和可变的对象的引用

 Js的原始值(underfined,null,布尔值,数字和字符串)与对象(包括数组和函数)有着根本区别。

对象的比较并非值得比较:即使两个对象包含同样的属性及相同的值,它们是不相等的。各个索引元素完全相等的两个数组也是不相等的。

var o={x:1}  ,p={x:1}

o===p                           //false:两个单独的对象用不相等

var  a=[] ,b=[];               //两个单独的空数组

a===b                           =>false:两个单独的数组用不相等

通常将对象称为引用类型(reference type),对象值都是引用(reference),对象的比较均是引用的比较:当且仅当它们引用同一个基对象时,它们才相等。

    var a=[];     //定义一个引用空数组的变量a

    var b=a;     //变量b引用同一个数组

    b[0]=1;      //通过变量b来修改引用的数组

    a[0]            //1:变量a也会修改

    a===b;      //=>ture:a和b引用同一个数组,因此它们相等

使用循环来完成数组复制:

  var a=['a'、'b'、'c'];

  var b=[];

  for(var i=0;i<a.lenght;i++){

       b[i]=a[i];

}

类型转换

js中对象到字符串的转换:

 ~如果对象具有toString()方法,则调用这个方法。如果他返回一个原始值,Js将这个值转换为字符串,并返回这个字符串的结果。

~如果对象没有toString()方法,或者这个方法并不返回一个原始值,那么JS会调用valueOf()方法。如果存在这个方法,则JS调用它,返回原始值。

~否则JS无法从toString()或valuOf()获得一个原始值,因此这时它将抛出一个类型错误异常。

在对象到数字的转换过程中,Js首先尝试用valueOf()方法:

原文地址:https://www.cnblogs.com/maizigogo/p/4800028.html