解决javascript 设置访问器属性时的堆栈溢出问题
来源:互联网 发布:第一支口红知乎 编辑:程序博客网 时间:2024/05/17 22:53
照着书上的Demo写访问器属性函数时,突然发现一个问题,看下面的Demovar book={ year:2004, edition:1};Object.defineProperty(book,"year",{ get:function(){ return this.year; }, set:function(newValue){ if(newValue>2004){ this.year=newValue; this.edition+=newValue-2004; } }});book.year=2005;alert(book.edition);在Apache中一运行,结果浏览器报出 堆栈溢出的错误;为什么会出现这种情况呢?主要是因为进入了一种死循环状态,以year属性为例:year属性的set访问器代码中有一句为 this.year=newValue; 而this.year又会再次调用set访问器,而set访问器又会执行this.year=newValue,直到内存溢出;所以Demo应改为:var book={ year:2004, edition:1};Object.defineProperty(book,"year",{ get:function(){ return year; }, set:function(newValue){ if(newValue>2004){ year=newValue; this.edition+=newValue-2004; } }});book.year=2005;alert(book.edition);这样就使问题解决了;
(第一次写blog,内容不是很明显,结构不是很清晰,还请各位大神指点,谢谢)
1 0
- 解决javascript 设置访问器属性时的堆栈溢出问题
- PerlRegex堆栈溢出的问题
- Windbg的gflags.exe调试堆栈溢出,访问越界等问题。
- editText 的addTextChangeListener的堆栈溢出问题
- 最初级的堆栈溢出分析问题
- Linux堆栈溢出的经典问题
- 关于C++堆栈溢出的问题
- 线程堆栈溢出引起的问题
- Stack overflow. 更改堆栈空间解决栈溢出问题
- XSL堆栈溢出问题
- ARM 堆栈溢出问题
- 关于堆栈溢出问题
- 堆栈溢出问题
- 堆栈溢出问题
- JavaScript的属性访问
- javascript 深度递归引起的堆栈溢出,终极解决方案
- Javascript中递归造成的堆栈溢出及解决方案
- Javascript中递归造成的堆栈溢出及解决方案
- dbms_job包的用法
- Android官方培训课程中文版
- Android setSystemUiVisibility()简单用法
- Android开发之通知栏Notification详解
- python指数、幂数拟合curve_fit
- 解决javascript 设置访问器属性时的堆栈溢出问题
- Java学习笔记
- AtomicBoolean介绍与使用
- 近 100 个 Linux 常用命令大全
- ClearCase里不能mkelem
- 我的性格职业测评
- Android AsyncTask介绍
- Android 启动过程介绍
- Cocoapods 安装使用方法