包装类——javascript

首先了解一下js中的数据类型,js中的数据类型分为两大门派,原始数据类型和引用数据类型

 原始数据类型:boolean String number null undefined

 引用数据类型:object(其实就是对象)

引用数据类型有自己的方法和属性,原始数据类型是没有的,但是在原始数据类型中有三个特殊的存在:String boolean number(也被称做基本包装类型),有自己对应的包装对象,并且有相应的属性和方法。

 创建一个字符串类型或者数字类型,然后使用字符串或者数字类型的方法时,后台就会悄咪咪的创建一个对应的基本包装类型的对象,这个基本包装类型的对象相对于new一个对象,在对象调用完后,就会被销毁,再去访问就是undefined,只是存在一瞬间,所以无法给基本包装类型添加方法(运用原型可以g给基本包装类型添加方法),举个例子:

var str = 'hello';
str.number = 10;  //假设给字符串添加number属性,后台的操作如下
{
  var str = new String('hello'); //找到对应的包装类型对象,然后通过包装对象,创建一个和基本类型值相同的对象
  str.number = 10; //通过这个对象,调用包装对象的方法,没有被任何东西保存
  str =null; //这个对象被销毁
}
alert(str.number); //undefined 运行到这一句话的时候,因为基本类型没有属性,重复上面的步骤,如下
{
  var str = new String('hello');
  str.number = undefined;
  str =null;
}

再来看一个例子:

var str = "abc";  //str = abc
str += 1;  //str = abc1
var test = typeof(str); // test = string
if(test.length == 6){ //test为原始数据类型,添加上去会马上销毁
  test.sign = "typeof的返回结果是string";
}
console.log(test.sign); //所以最后输出结果为undefined

记住一句话:

  不可改变的原始数据类型和可以改变的引用数据类型

解释这句话的含义之前必须知道,对象运行作比较是比较地址的,我们现在来看看这句话的含义:不可改变的原始数据类型指的是不能改变它的地址,如果原始值发生改变,那么地址肯定会发生改变。引用数据类型发生改变后,地址并不会发生变化,所以引用数据类型是可以发生改变的。

 


posted @ 2018-06-26 16:44  橘子味薄荷味  阅读(191)  评论(0编辑  收藏  举报