当n,person执行完之后离开了js的执行环境,浏览器的垃圾收集器下次运行时将其销毁,就当他已经销毁。
但是这儿还能调用的原因时,当运行peron("qzh")时,n以函数值的形式返回并赋值给stu1,stu2,相当于stu1有了n的一份拷贝,所以可以被调用。
如果真正的不能被调用,就需要显式的解除这个引用。
stu1 = null;那以后的方式就不能被调用,不能调用就会报错,从而中止程序的执行。function peron(name){
var n = new Object;
n.sayname = function(){
return name;
}
n.setname = function(newname){
name = newname;
}
return n;
}
var stu1 = peron("qzh");
var stu2 = peron("xxx");
stu1 = null;
alert(stu1.sayname()); // TypeError : stu1 is null
stu2.setname("wo");
alert(stu2.sayname());扩展阅读:js的垃圾回收机制
但是这儿还能调用的原因时,当运行peron("qzh")时,n以函数值的形式返回并赋值给stu1,stu2,相当于stu1有了n的一份拷贝,所以可以被调用。
如果真正的不能被调用,就需要显式的解除这个引用。
stu1 = null;那以后的方式就不能被调用,不能调用就会报错,从而中止程序的执行。function peron(name){
var n = new Object;
n.sayname = function(){
return name;
}
n.setname = function(newname){
name = newname;
}
return n;
}
var stu1 = peron("qzh");
var stu2 = peron("xxx");
stu1 = null;
alert(stu1.sayname()); // TypeError : stu1 is null
stu2.setname("wo");
alert(stu2.sayname());扩展阅读:js的垃圾回收机制
解决方案 »
- 急!!!js如何解析这样的字符串,用哪个方法
- www.quoracms.com倒计时页面代码是怎样实现的?
- 请问如何将一个ie窗口对象传递给它打开的一个新窗口的脚本中进行操作??
- jsp-jb-sql高级技术群 QQ:18954667
- WEB上如何开发音量调节那样SCROLLBAR啊
- 我想上传文件,但不想用<input type=file>怎么办啊
- 一个用鼠标移动的层里,有一个ListBox,结果是无法顺利的滚动ListBox,有没有试一下,在线中
- 如何关闭光驱呢?
- 我认为很难的问题,也许对于你来说很easy~~~~
- javascript中如何把字符串变为数字?
- json 跨域获取
- 用sencha touch Ext.field.search怎么实现搜索
我想问的是 调用完stu1=peron("qzh") 执行一遍那个函数 n能返回这我知道
但是为什么stu1.sayname()还能有用 name在执行一遍函数完之后 不应该销毁吗
而且stu1.setname()也能修改 都能正常输出
但是为什么stu1.sayname()还能有用 name在执行一遍函数完之后 不应该销毁吗
而且stu1.setname()也能修改 都能正常输出
销毁的是n,但是stu1又复制了一份n的拷贝,所以他有n的行为。n被销毁了,stu1还在作用域内,所以可以调用方法。
stu1被显式的设为null之后就不能被调用了,意思就是n的拷贝也被销毁了。