马上注册 家电论坛,众多有奖活动等你来参与!
您需要 登录 才可以下载或查看,没有账号?注册
x
假设你还不好了解的话,送上图一张:
对照图去了解下面讲的,后续会继续剖析js是如何围绕内存定义自己的规则停止操作内存数据的!!
总之记住一句话,我们学的是言语的规则,内存的数据是任何言语的目的对象(一切言语基本差不多),独一的差异是规则
,关于任何言语来讲,不论他们是如
www.jhhzt.com 何定义自己言语的规则,目的只要一个,那就是操作内存数据(如何从内存里取数据,如何操作取出来的数据,然后如何把操作后的数据放出来),js虽然是弱类型的言语(在内存开拓的变量类型归属会依据运用状况的变化而变化),但万变不离其宗,那就是怎
www.kxsnw.com 样也逃不出值类型和援用类型两大数据类型,这两大类型有自己的规则,那就是不能相互变换,但这里有个效果能够大家觉得很奇异:
?Number,prototype,name="lyg";
varval=23;
alert(val,name);弹出“lyg”
(注:下面说的类型就是援用类型和值类型的区分)
有些人能够就要问为什么作为值类型的val变量可以像对象一样的方式来访问呢,是不是它就转成援用类型的数据了呢?!那我来通知你,这里val基本就没有变它的类型,说过每个言语它都有自己的规则,这个规则就是顺序在执行val,name的时分,它会瞬
www.xsaju.com 时地在栈中开拓一块空间放相似如下代码(val=newNumber(),val,name),记住哦,这里说的是瞬时,运转完这行代码后,立刻销毁创立的援用对象,这时val堆空间就又回到指向原来的值类型的数据了,所以后面你以为可以经过如下val,age=23;alert(val,age);是错误的,由于到这里曾经是值类型数据23了,23当然不能开拓属性值了
|