Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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 如何从调用父属性的对象方法调用函数_Javascript - Fatal编程技术网

Javascript 如何从调用父属性的对象方法调用函数

Javascript 如何从调用父属性的对象方法调用函数,javascript,Javascript,返回未定义的 function myFunc() { omaps: function tes() { return this.parent.x + this.parent.y; } } var myobj = { x: 1, y: 2, z: myFunc() } window.alert(myobj.z); functio

返回未定义的

        function myFunc() {
        omaps: function tes() {
            return this.parent.x + this.parent.y;
        }
    }

    var myobj = {
        x: 1,
        y: 2,
        z: myFunc()
    }

    window.alert(myobj.z);
        function myFunc() {
        omaps: function tes() {
            return myobj.x + myobj.y;
        }
    }

    var myobj = {
        x: 1,
        y: 2,
        z: myFunc()
    }

    window.alert(myobj.z);
返回未定义的

        function myFunc() {
        omaps: function tes() {
            return this.parent.x + this.parent.y;
        }
    }

    var myobj = {
        x: 1,
        y: 2,
        z: myFunc()
    }

    window.alert(myobj.z);
        function myFunc() {
        omaps: function tes() {
            return myobj.x + myobj.y;
        }
    }

    var myobj = {
        x: 1,
        y: 2,
        z: myFunc()
    }

    window.alert(myobj.z);
返回[对象,对象]

从上面的代码片段中,我得到了一个返回,返回值为undefined或[object,object],而不是值3


如何返回预期的值?我这样做是对还是错?

在前两个示例中,由于分配给myobj.z的值是调用myFunc的结果,因此没有定义

该函数没有return语句,因此它返回undefined,这是分配给myobj.z的值

在第三个示例中,您正在将一个对象分配给myobj.z,因此可以看到调用从对象构造函数继承的toString方法(即打开的方法)的结果,该方法返回
“[object object]”

您可能想做的是:

        var myobj = {
        x: 1,
        y: 2,
        z: {
            omaps: function() {
                return myobj.x + myobj.y;
            }
        }
    }

    window.alert(myobj.z);
您还可以使用(现代浏览器支持的):


您可以将函数分配给
myobj.z
,并使用
this.x
this.y
通过如下调用
myobj.z()
来获取属性和值

var myobj = {
    x: 1,
    y: 2,
    get z(){
      return this.x + this.y;
    }
}

window.alert(myobj.z)  // 3
function myFunc() {
        return this.x + this.y;
    }

    var myobj = {
        x: 1,
        y: 2,
        z: myFunc
    }

    window.alert(myobj.z());
另一种方法是在函数中向对象传递属性,并像下面这样将返回值赋给
myobj.z

var myobj = {
    x: 1,
    y: 2,
    get z(){
      return this.x + this.y;
    }
}

window.alert(myobj.z)  // 3
function myFunc() {
        return this.x + this.y;
    }

    var myobj = {
        x: 1,
        y: 2,
        z: myFunc
    }

    window.alert(myobj.z());

该代码在语法上不正确,您应该无法获取
(对象,对象)
。请先检查粘贴是否正确。另外-请注意,
method1:
这里不是一个方法-如果有,它将是一个标签(如果其余的语法正确)。你没有收到语法错误吗?我希望z:myFunc().method1()@mplungjan-我希望未定义(如果语法错误已修复),由于myFunc没有返回语句。方法1 Hjover是否有返回值您是否尝试过第二种方法?您可能会发现出现类型错误,因为调用myFunc时myobj的值为undefined。