js中alert提示堆栈溢出

JavaScript019

js中alert提示堆栈溢出,第1张

出现js堆栈溢出的问题一般的情况有两种:

1、检查自己的js代码看代码中有没有死循环。

2、代码中引用了jQuery-1.4.2.min.js这个js实现一些动态效果或者是辅助,这个版本的jQuery就存在这样的问题(同事就是遇到了这个问题)。

3、解决方案:

4、查询自己的代码,用ie8、ie9自带的js调试工具跟一遍代码看哪里出现了问题。

5、更换jQuery引用版本。

你这个是因为你进入死循环了,以name属性为例,你name属性的get访问器的代码是:

return "hello! I'm " + this.name

此时return中包含this.name,而这个this.name又会再次进入你的get访问器,然后又发现有name又进入你的访问器,死循环直到内存溢出,你的age属性的set访问器一样的道理,改成下面这样就可以了。

var person = { }

(function () {

    var _name = "Rainn", _age = 25

    Object.defineProperties(person, {

        name: {

            get: function () {

                return "hello! I'm " + _name

            },

            set: function (newValue) {

                _name = newValue + "(changed)"

            }

        },

        age: {

            get: function () {

                return "18 forever"

            },

            set: function (newValue) {

                _age -= 1

            }

        }

    })

})()