Explicit way to check whether a function was called from within the Window












7















Is there a more explicit way of checking whether a function was called from within Window than if (typeof this.value == "undefined")
in the code below?



So that it is apparent that I am checking against Window, something like: if this.name === "Window".






function get_caller() {
if (typeof this.value == "undefined") {
console.log('function get_caller called from window')
}
else {
console.log('function get_caller called by button press')
}
}

btn.addEventListener('click', get_caller)
get_caller()

<button id="btn">Get caller</button>












share|improve this question




















  • 3





    What happens when somebody calls get_caller.call({value: "I am not in window"})?

    – VLAZ
    Feb 24 at 8:23
















7















Is there a more explicit way of checking whether a function was called from within Window than if (typeof this.value == "undefined")
in the code below?



So that it is apparent that I am checking against Window, something like: if this.name === "Window".






function get_caller() {
if (typeof this.value == "undefined") {
console.log('function get_caller called from window')
}
else {
console.log('function get_caller called by button press')
}
}

btn.addEventListener('click', get_caller)
get_caller()

<button id="btn">Get caller</button>












share|improve this question




















  • 3





    What happens when somebody calls get_caller.call({value: "I am not in window"})?

    – VLAZ
    Feb 24 at 8:23














7












7








7








Is there a more explicit way of checking whether a function was called from within Window than if (typeof this.value == "undefined")
in the code below?



So that it is apparent that I am checking against Window, something like: if this.name === "Window".






function get_caller() {
if (typeof this.value == "undefined") {
console.log('function get_caller called from window')
}
else {
console.log('function get_caller called by button press')
}
}

btn.addEventListener('click', get_caller)
get_caller()

<button id="btn">Get caller</button>












share|improve this question
















Is there a more explicit way of checking whether a function was called from within Window than if (typeof this.value == "undefined")
in the code below?



So that it is apparent that I am checking against Window, something like: if this.name === "Window".






function get_caller() {
if (typeof this.value == "undefined") {
console.log('function get_caller called from window')
}
else {
console.log('function get_caller called by button press')
}
}

btn.addEventListener('click', get_caller)
get_caller()

<button id="btn">Get caller</button>








function get_caller() {
if (typeof this.value == "undefined") {
console.log('function get_caller called from window')
}
else {
console.log('function get_caller called by button press')
}
}

btn.addEventListener('click', get_caller)
get_caller()

<button id="btn">Get caller</button>





function get_caller() {
if (typeof this.value == "undefined") {
console.log('function get_caller called from window')
}
else {
console.log('function get_caller called by button press')
}
}

btn.addEventListener('click', get_caller)
get_caller()

<button id="btn">Get caller</button>






javascript






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Feb 24 at 10:03







barciewicz

















asked Feb 24 at 8:20









barciewiczbarciewicz

672313




672313








  • 3





    What happens when somebody calls get_caller.call({value: "I am not in window"})?

    – VLAZ
    Feb 24 at 8:23














  • 3





    What happens when somebody calls get_caller.call({value: "I am not in window"})?

    – VLAZ
    Feb 24 at 8:23








3




3





What happens when somebody calls get_caller.call({value: "I am not in window"})?

– VLAZ
Feb 24 at 8:23





What happens when somebody calls get_caller.call({value: "I am not in window"})?

– VLAZ
Feb 24 at 8:23












2 Answers
2






active

oldest

votes


















7














Just check if this is window:






function get_caller() {
if (this === window) {
console.log('function get_caller called from window')
}
else {
console.log('function get_caller called by button press')
}
}

btn.addEventListener('click', get_caller)
get_caller()

<button id="btn">Get caller</button>








share|improve this answer



















  • 1





    Or undefined, in strict mode, which is the more common case today with webpack/modules.

    – Madara Uchiha
    Feb 24 at 10:17



















1














You can check if this==window or if strict mode is on check if this is undefined,






function get_caller() {
"use strict"; // !this is used for strict mode check
if (this == window || !this) {
console.log('function get_caller called from window')
}
else {
console.log('function get_caller called by button press')
}
}

btn.addEventListener('click', get_caller)
get_caller()

<button id="btn">Get caller</button>








share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54850048%2fexplicit-way-to-check-whether-a-function-was-called-from-within-the-window%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    7














    Just check if this is window:






    function get_caller() {
    if (this === window) {
    console.log('function get_caller called from window')
    }
    else {
    console.log('function get_caller called by button press')
    }
    }

    btn.addEventListener('click', get_caller)
    get_caller()

    <button id="btn">Get caller</button>








    share|improve this answer



















    • 1





      Or undefined, in strict mode, which is the more common case today with webpack/modules.

      – Madara Uchiha
      Feb 24 at 10:17
















    7














    Just check if this is window:






    function get_caller() {
    if (this === window) {
    console.log('function get_caller called from window')
    }
    else {
    console.log('function get_caller called by button press')
    }
    }

    btn.addEventListener('click', get_caller)
    get_caller()

    <button id="btn">Get caller</button>








    share|improve this answer



















    • 1





      Or undefined, in strict mode, which is the more common case today with webpack/modules.

      – Madara Uchiha
      Feb 24 at 10:17














    7












    7








    7







    Just check if this is window:






    function get_caller() {
    if (this === window) {
    console.log('function get_caller called from window')
    }
    else {
    console.log('function get_caller called by button press')
    }
    }

    btn.addEventListener('click', get_caller)
    get_caller()

    <button id="btn">Get caller</button>








    share|improve this answer













    Just check if this is window:






    function get_caller() {
    if (this === window) {
    console.log('function get_caller called from window')
    }
    else {
    console.log('function get_caller called by button press')
    }
    }

    btn.addEventListener('click', get_caller)
    get_caller()

    <button id="btn">Get caller</button>








    function get_caller() {
    if (this === window) {
    console.log('function get_caller called from window')
    }
    else {
    console.log('function get_caller called by button press')
    }
    }

    btn.addEventListener('click', get_caller)
    get_caller()

    <button id="btn">Get caller</button>





    function get_caller() {
    if (this === window) {
    console.log('function get_caller called from window')
    }
    else {
    console.log('function get_caller called by button press')
    }
    }

    btn.addEventListener('click', get_caller)
    get_caller()

    <button id="btn">Get caller</button>






    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Feb 24 at 8:22









    SnowSnow

    41112




    41112








    • 1





      Or undefined, in strict mode, which is the more common case today with webpack/modules.

      – Madara Uchiha
      Feb 24 at 10:17














    • 1





      Or undefined, in strict mode, which is the more common case today with webpack/modules.

      – Madara Uchiha
      Feb 24 at 10:17








    1




    1





    Or undefined, in strict mode, which is the more common case today with webpack/modules.

    – Madara Uchiha
    Feb 24 at 10:17





    Or undefined, in strict mode, which is the more common case today with webpack/modules.

    – Madara Uchiha
    Feb 24 at 10:17













    1














    You can check if this==window or if strict mode is on check if this is undefined,






    function get_caller() {
    "use strict"; // !this is used for strict mode check
    if (this == window || !this) {
    console.log('function get_caller called from window')
    }
    else {
    console.log('function get_caller called by button press')
    }
    }

    btn.addEventListener('click', get_caller)
    get_caller()

    <button id="btn">Get caller</button>








    share|improve this answer




























      1














      You can check if this==window or if strict mode is on check if this is undefined,






      function get_caller() {
      "use strict"; // !this is used for strict mode check
      if (this == window || !this) {
      console.log('function get_caller called from window')
      }
      else {
      console.log('function get_caller called by button press')
      }
      }

      btn.addEventListener('click', get_caller)
      get_caller()

      <button id="btn">Get caller</button>








      share|improve this answer


























        1












        1








        1







        You can check if this==window or if strict mode is on check if this is undefined,






        function get_caller() {
        "use strict"; // !this is used for strict mode check
        if (this == window || !this) {
        console.log('function get_caller called from window')
        }
        else {
        console.log('function get_caller called by button press')
        }
        }

        btn.addEventListener('click', get_caller)
        get_caller()

        <button id="btn">Get caller</button>








        share|improve this answer













        You can check if this==window or if strict mode is on check if this is undefined,






        function get_caller() {
        "use strict"; // !this is used for strict mode check
        if (this == window || !this) {
        console.log('function get_caller called from window')
        }
        else {
        console.log('function get_caller called by button press')
        }
        }

        btn.addEventListener('click', get_caller)
        get_caller()

        <button id="btn">Get caller</button>








        function get_caller() {
        "use strict"; // !this is used for strict mode check
        if (this == window || !this) {
        console.log('function get_caller called from window')
        }
        else {
        console.log('function get_caller called by button press')
        }
        }

        btn.addEventListener('click', get_caller)
        get_caller()

        <button id="btn">Get caller</button>





        function get_caller() {
        "use strict"; // !this is used for strict mode check
        if (this == window || !this) {
        console.log('function get_caller called from window')
        }
        else {
        console.log('function get_caller called by button press')
        }
        }

        btn.addEventListener('click', get_caller)
        get_caller()

        <button id="btn">Get caller</button>






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Feb 24 at 8:51









        Code_ModeCode_Mode

        1,152714




        1,152714






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54850048%2fexplicit-way-to-check-whether-a-function-was-called-from-within-the-window%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            How to send String Array data to Server using php in android

            Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents

            Is anime1.com a legal site for watching anime?