好的伙计们,所以我有这个代码:
var q=(function(){
var u,q,x;
x=616;
q=q_construct();
qp_construct();
return q;
function q_construct(){
var q,pro;
q={
a:1
};
return q;
};
function qp_construct(){
console.log('1 ⇒ ',q,x);
Object.defineProperty(Object.prototype,'q',{get:function(){
console.log('2 ⇒ ',q,x);
var r={b:2};
return r;
}});
};
})();
当我将y={z:616}; y.q;
输入控制台时,我得到:
1 ⇒ Object {a: 1} 616
y={z:616}; y.q; // console entry point
2 ⇒ Object {a: 1} 616
Object {b: 2}
但如果我改变了:
var r={b:2};
return r;
到
var q={b:2};
return q;
结果改变自:
2 ⇒ Object {a: 1} 616
到
2 ⇒ undefined 616
我无法找到原因,在将此变量名称设置为q
时,固有范围中的q
将重新定义为undefined
。在我的脑后有些东西在唠叨,说我读了一些可能有帮助的“吊装”的东西?