Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 第一次在对象内调用时未定义JS对象属性_Javascript_Node.js_Javascript Objects - Fatal编程技术网

Javascript 第一次在对象内调用时未定义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

考虑以下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 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执行?