JavaScript返回的功能不是值

时间:2017-05-30 10:01:38

标签: javascript function return return-value

我有一个对象,我可以从中调用一个函数。而不是它返回函数本身的值。这可能是重复但我找不到合适的解决方案。因此,任何关于此事的流行语都将受到高度赞赏。

var w = window,
    d = document,
    e = d.documentElement,
    g = d.getElementsByTagName('body')[0];

var asd = {
    getWindowWidth: function() {
        var x = w.innerWidth || e.clientWidth || g.clientWidth;
        return x;
    },
    getWindowHeight: function() {
        var x = (function() {
            return w.innerWidth || e.clientWidth || g.clientWidth;
        })();
        return x;
    },
    init: function() {
        console.log("init fired");
        console.log(this.getWindowWidth);
        console.log(this.getWindowHeight);
        console.log(typeof(this.getWindowHeight));
    }
}

asd.init();

提前感谢您的支持。

4 个答案:

答案 0 :(得分:3)

使用括号来调用函数,否则你只是简单地捕获了函数。

console.log(this.getWindowWidth());
//                             ^^

答案 1 :(得分:2)

只需更改您的功能this.getWindowWidth()

即可

没有paranthesis它将执行实际的函数调用,它不会返回值。



var w = window,
    d = document,
    e = d.documentElement,
    g = d.getElementsByTagName('body')[0];

var asd = {
    getWindowWidth: function() {
        var x = w.innerWidth || e.clientWidth || g.clientWidth;
        return x;
    },
    getWindowHeight: function() {
        var x = (function() {
            return w.innerWidth || e.clientWidth || g.clientWidth;
        })();
        return x;
    },
    init: function() {
        console.log("init fired");
        console.log(this.getWindowWidth());
        console.log(this.getWindowHeight());
        console.log(typeof(this.getWindowHeight()));
    }
}

asd.init();




答案 2 :(得分:0)

您正在使用this.getWindowHeight而不是this.getWindowHeight()

var w = window,
    d = document,
    e = d.documentElement,
    g = d.getElementsByTagName('body')[0];

var asd = {
    getWindowWidth: function() {
        var x = w.innerWidth || e.clientWidth || g.clientWidth;
        return x;
    },
    getWindowHeight: function() {
        var x = (function() {
            return w.innerWidth || e.clientWidth || g.clientWidth;
        })();
        return x;
    },
    init: function() {
        console.log("init fired");
        console.log(this.getWindowWidth());
        console.log(this.getWindowHeight());
        console.log(typeof(this.getWindowHeight()));
    }
}

asd.init();

答案 3 :(得分:0)

调用init函数,但其​​他函数没有那么多。 正如Alex K.所说,你需要改变

console.log(this.getWindowWidth);
console.log(this.getWindowHeight);
console.log(typeof(this.getWindowHeight));

为:

console.log(this.getWindowWidth());
console.log(this.getWindowHeight());
console.log(typeof(this.getWindowHeight()));



var w = window,
    d = document,
    e = d.documentElement,
    g = d.getElementsByTagName('body')[0];

var asd = {
    getWindowWidth: function() {
        var x = w.innerWidth || e.clientWidth || g.clientWidth;
        return x;
    },
    getWindowHeight: function() {
        var x = (function() {
            return w.innerWidth || e.clientWidth || g.clientWidth;
        })();
        return x;
    },
    init: function() {
        console.log("init fired");
        console.log(this.getWindowWidth());
        console.log(this.getWindowHeight());
        console.log(typeof(this.getWindowHeight()));
    }
}

asd.init();