Javascript Error: cyclic __proto__ value
Javascript Error: cyclic __proto__ value
我想更改默认的 window.location setter 和 getter 函数。
以下代码已成功运行。但此代码仅适用于有限区域。
var _window = window;
(function () {
window = {};
var window = {};
Object.defineProperty(window, 'location', {
get: function () { alert('called getter '); return _window.location; },
set: function () { alert('not in my house'); }
});
window.__proto__ = _window;
alert('window.location : '+ window.location);
}());
当我移除方块时,
var _window = window;
window = {};
var window = {};
Object.defineProperty(window, 'location', {
get: function () { alert('called getter '); return _window.location; },
set: function () { alert('not in my house'); }
});
window.__proto__ = _window;
alert('window.location : '+ window.location);
我遇到了以下错误。
ERROR Error: cyclic __proto__ value
我知道在正常环境下无法重新定义不可配置的属性 "location"。我更改了绑定 IDL 属性以在 webkit 库中测试这些代码。我该如何解决这个问题?
我还有一个问题。当我 运行 以下代码时,我遇到了同样的错误。(jsc - Javascript Core, Spidermonkey, nodejs)
var o1 = { p1: 1 };
var o2 = { p2: 2 };
o2.__proto__ = o1;
var o3 = { p3: 3 };
o3.__proto__ = o2;
o1.__proto__ = o3;
Javascript核心shell(jsc)
Exception: Error: cyclic __proto__ value
node.js (v0.10.25)
Error: Cyclic __proto__ value
蜘蛛猴JavaScript-C24.2.0
1.js:7:0 TypeError: cyclic __proto__ value
有关系吗?谢谢^^
在这两种情况下,您确实创建了一个原型链循环。
在闭包中 window
是局部变量(因为提升),因此您不会在全局 window 对象上创建原型循环。
var o1 = { p1: 1 };
var o2 = { p2: 2 };
var o3 = { p3: 3 };
o2.__proto__ = o1;
o1.__proto__ = o3;
o3.__proto__ = o2;
VM432:7 Uncaught TypeError: Cyclic __proto__ value
at Object.set __proto__ [as __proto__] (<anonymous>)
at <anonymous>:7:14
原因: JavaScript 如果我们尝试在 circle.The 中分配 __proto__
将抛出错误引用不能绕圈.
我想更改默认的 window.location setter 和 getter 函数。
以下代码已成功运行。但此代码仅适用于有限区域。
var _window = window;
(function () {
window = {};
var window = {};
Object.defineProperty(window, 'location', {
get: function () { alert('called getter '); return _window.location; },
set: function () { alert('not in my house'); }
});
window.__proto__ = _window;
alert('window.location : '+ window.location);
}());
当我移除方块时,
var _window = window;
window = {};
var window = {};
Object.defineProperty(window, 'location', {
get: function () { alert('called getter '); return _window.location; },
set: function () { alert('not in my house'); }
});
window.__proto__ = _window;
alert('window.location : '+ window.location);
我遇到了以下错误。
ERROR Error: cyclic __proto__ value
我知道在正常环境下无法重新定义不可配置的属性 "location"。我更改了绑定 IDL 属性以在 webkit 库中测试这些代码。我该如何解决这个问题?
我还有一个问题。当我 运行 以下代码时,我遇到了同样的错误。(jsc - Javascript Core, Spidermonkey, nodejs)
var o1 = { p1: 1 };
var o2 = { p2: 2 };
o2.__proto__ = o1;
var o3 = { p3: 3 };
o3.__proto__ = o2;
o1.__proto__ = o3;
Javascript核心shell(jsc)
Exception: Error: cyclic __proto__ value
node.js (v0.10.25)
Error: Cyclic __proto__ value
蜘蛛猴JavaScript-C24.2.0
1.js:7:0 TypeError: cyclic __proto__ value
有关系吗?谢谢^^
在这两种情况下,您确实创建了一个原型链循环。
在闭包中 window
是局部变量(因为提升),因此您不会在全局 window 对象上创建原型循环。
var o1 = { p1: 1 };
var o2 = { p2: 2 };
var o3 = { p3: 3 };
o2.__proto__ = o1;
o1.__proto__ = o3;
o3.__proto__ = o2;
VM432:7 Uncaught TypeError: Cyclic __proto__ value
at Object.set __proto__ [as __proto__] (<anonymous>)
at <anonymous>:7:14
原因: JavaScript 如果我们尝试在 circle.The 中分配 __proto__
将抛出错误引用不能绕圈.