js高程(3)

js高级程序设计(三
1.js不允许直接访问内存中的位置,引用类型的值是按引用访问的。
2.引用类型的值,可以为其添加删除属性方法(对象)。不能给基本类型的值加属性(无效)
3. 参数只能按值传递
4.对象是按值传递的
function setName(obj){
    obj.name="Ni";
    obj=new Object();
    obj.name="Gr";
}
var person=new Object();
setName(person);
alert(person.name);//"Ni"在函数内部重写obj时,变量的引用就是一个对象,局部对象会在函数执行完毕立即销毁。
5.可以把ESCMAScript函数想象成局部变量;
6.检测类型:typeOf返回类型值,result=person instanceof Object返回true/false;
7.对正则表达式的应用typeOf会返回"function",IE和FF返回"object"
8.当执行流进入下列任何一个语句时,作用域链就会得到加长:try-catch块,with语句
9.with语句内部定义了url变量,可以作为函数的值被返回
10.IE8以前的版本,在catch块的外部也可以访问到错误对象
11.for循环和if条件句中没有块级作用域
12.var a="blue";

function b(){

var a="red";

return a;

}

alert(b());//访问局部变量比全局变量更快;
13.js中的垃圾搜集方式:标记清除, 永远不能释放进入环境的变量所占的内存,
14.标记清除:垃圾搜集器运行时,会给存储在内存中的所有变量都加上标记,它会去掉环境变量以及被环境中变量引用的变量标记,被加上标记的变量被视为准备删除的变量,被加上标记的变量完成内存清除;
15.引用计数:跟踪记录每个值被引用的次数,当声明了一个变量并将一个引用类型值赋给变量时,则这个值的引用次数就是加1,如果这个引用变量又取得另一个值,则这个值引用次数减1,为0时将其占用空间收回;
16.引用计数有问题,但IE涉及com对象就会存在这个循环引用问题。
myObject.element=element;
element.someObject=myObject;//循环引用
为了避免循环引用的问题,不使用时断开原生
myObject.element=null;
element.someObject=null;
(IE9把BOM,DOM对象转换成真正的js对象,避免两种垃圾算法导致的问题,消除了内存泄漏的现象)
17.IE7重写了垃圾收集历程:触发垃圾收集机制的变量分配,字面量和数组元素的临界值被调整为动态修正。IE7中的各项临界值在初始时与IE6相等,回收的内存分配小于15%,临界值翻倍,大于85%,临界值回到默认值;

管理内存:浏览器的可用内存少,影响变量分配内存,影响调用栈以及一个线程中能够同时执行的语句数量。一旦数据不在有用,最好将其值设置为null,适用于大多数全局变量和全局对象的属性。
解除引用的作用:让值脱离执行环境,以便垃圾收集器下次运行时将其回收;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值