Javascript 第一次在对象内调用时未定义JS对象属性
考虑以下JS对象,它具有:Javascript 第一次在对象内调用时未定义JS对象属性,javascript,node.js,javascript-objects,Javascript,Node.js,Javascript Objects,考虑以下JS对象,它具有: x:给定值为100的变量 p:打印x的值,创建后立即调用 y:打印x的值,在对象创建后调用 当在对象创建过程中立即打印Pipe.x的值时,由于某种原因Pipe.x是未定义的,但是当在对象创建后调用p.y()时,Pipe.x的值是100,因为它本来应该在第一位 var Pipe = { x: 100, p: function(){ console.log('p says x is ' + this.x); // prints y s
- x:给定值为100的变量
- p:打印x的值,创建后立即调用
- y:打印x的值,在对象创建后调用
未定义的
,但是当在对象创建后调用p.y()时,Pipe.x的值是100,因为它本来应该在第一位
var Pipe = {
x: 100,
p: function(){
console.log('p says x is ' + this.x); // prints y says x is undefined
}(), // call immediately
y: function(){
console.log('y says x is ' + this.x);
}
}
Pipe.y(); // prints y says x is 100
是否有我缺少的JS对象属性使Pipe.p()print未定义,而p.y()print为100?此
上下文取决于调用它的方式。
当您调用Pipe.y()时,它相当于obj.method(),此
将指向obj,在本例中为Pipe
当p作为iLife执行时,它被设置为window,window上没有x,这是有意义的。另外,考虑到上面的条件,是否有任何方法可以得到p中x的值,即使p()作为IIFE执行?