对象跟基本类型之间的转换

1,对象跟基本类型之间的转换: 
不管何时,只是对象非空,在布尔环境中都为true. 
如; 
new Boolean(false); 
new Number(0); 
new String(“”); 
new Array(); 
上面虽然内部值是false,但对象的值是true; 
Object ? valueOf() ? toString() 
其中Date类,是先执行toString()转换。 
2,js中操作一个数据值: 
任何语言都有自己的操作数据的方法; 
Js也不例外,js有3种重要的方式来操作一个数据值。 
1) 复制它。例如把它赋给一个新的变量。 
2) 把它作为参数传递给一个函数或方法。 
3) 可以和其他值比较大小。 
Js通过传值和传址2种方式操作这些数据的值。 
从名称可以看处,传值 是通过传递值来操作数据。在赋值的过程中,对实际的值进行了拷贝,存储到一个新的变量中。拷贝的值和原来的值是2份完全独立的值。所以如果你改变了拷贝的值,并不会影响原来的值。当比较大小时候,通常进行琢个字节比较。 
传址 从名字来看,就是通过传递地址来操作数据。在赋值的过程中,对实际的值的地址(可以说是引用)进行了拷贝,他们不是完全的独立,所以如果你通过引用改变了值,那么原始的值也会改变。当比较大小的时候,通常是看他们是否引用同一个地址来比较。 
简单的传址例子: 
var a = new Date(); 
alert(a.getDate()); 
var b = a ; 
b.setDate(21); 
alert(a.getDate()) // 输出21 
3,一般来说: 
基本数据类型通过传值来操作的。(如果忘记了哪些是基本数据类型,可以往回看。) 
对象数据类型通过传址来操作的。(比如 数组和函数) 
例子: 
<script> 
//传值 
a=1; 
b=a; 
b=2; 
alert(a); //输出 1 
//传址 
x=[1,2]; 
y=x; // 赋给y的只是x的一个引用,而不是x本身。数组已经在语句中被赋值了,执行过这段代码后,仍旧只有一个数组对象,只不过我们有2个对他的引用了。 
y[0]=2; 
alert(x[0] +" | " +x[1]); //输出 2 | 2 
</script> 
其中我们必须注意字符串: 
js中字符串是通过传址来复制和传递的,而他们是通过传值来比较的。 
对象和数组是用传值来传递的,只不过传递的这个值实际是一个引用,而不是对象本身。 
总结: 
类型 复制 传递 比较 
数字 传值 传值 传值 
布尔 传值 传值 传值 
字符串 不可变 不可变 传值 
对象 传址 传址 传址 
不可变:在JS中,没有方法去改变字符串值的内容。 
对字符串来说,传值还是传址,意义不大。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值