Why isPrototypeOf() returns false?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







6















I have above constructors and SubType prototype pointing to an instance of SuperType. When I do x.isPrototypeOf(SubType.prototype) it returns false. I am confused as I have explicitly set x as a prototype for SubType. Can someone tell me why it's happening?






function SuperType(){}

function SubType(){}

x = new SuperType();

SubType.prototype = x;
SubType.prototype.constructor = SubType;

console.log(x.isPrototypeOf(SubType)) // returns false
console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true












share|improve this question




















  • 1





    Not sure to get my head all clear here, but x === SubType.prototype how do you expect it to be its own prototype?

    – Kaiido
    1 hour ago











  • Updated my question, sorry about that type

    – Gautam
    1 hour ago











  • try console.log(x.isPrototypeOf(new SubType)) for example of how it's used.

    – dandavis
    1 hour ago


















6















I have above constructors and SubType prototype pointing to an instance of SuperType. When I do x.isPrototypeOf(SubType.prototype) it returns false. I am confused as I have explicitly set x as a prototype for SubType. Can someone tell me why it's happening?






function SuperType(){}

function SubType(){}

x = new SuperType();

SubType.prototype = x;
SubType.prototype.constructor = SubType;

console.log(x.isPrototypeOf(SubType)) // returns false
console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true












share|improve this question




















  • 1





    Not sure to get my head all clear here, but x === SubType.prototype how do you expect it to be its own prototype?

    – Kaiido
    1 hour ago











  • Updated my question, sorry about that type

    – Gautam
    1 hour ago











  • try console.log(x.isPrototypeOf(new SubType)) for example of how it's used.

    – dandavis
    1 hour ago














6












6








6


1






I have above constructors and SubType prototype pointing to an instance of SuperType. When I do x.isPrototypeOf(SubType.prototype) it returns false. I am confused as I have explicitly set x as a prototype for SubType. Can someone tell me why it's happening?






function SuperType(){}

function SubType(){}

x = new SuperType();

SubType.prototype = x;
SubType.prototype.constructor = SubType;

console.log(x.isPrototypeOf(SubType)) // returns false
console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true












share|improve this question
















I have above constructors and SubType prototype pointing to an instance of SuperType. When I do x.isPrototypeOf(SubType.prototype) it returns false. I am confused as I have explicitly set x as a prototype for SubType. Can someone tell me why it's happening?






function SuperType(){}

function SubType(){}

x = new SuperType();

SubType.prototype = x;
SubType.prototype.constructor = SubType;

console.log(x.isPrototypeOf(SubType)) // returns false
console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true








function SuperType(){}

function SubType(){}

x = new SuperType();

SubType.prototype = x;
SubType.prototype.constructor = SubType;

console.log(x.isPrototypeOf(SubType)) // returns false
console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true





function SuperType(){}

function SubType(){}

x = new SuperType();

SubType.prototype = x;
SubType.prototype.constructor = SubType;

console.log(x.isPrototypeOf(SubType)) // returns false
console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true






javascript






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 1 hour ago







Gautam

















asked 1 hour ago









GautamGautam

600413




600413








  • 1





    Not sure to get my head all clear here, but x === SubType.prototype how do you expect it to be its own prototype?

    – Kaiido
    1 hour ago











  • Updated my question, sorry about that type

    – Gautam
    1 hour ago











  • try console.log(x.isPrototypeOf(new SubType)) for example of how it's used.

    – dandavis
    1 hour ago














  • 1





    Not sure to get my head all clear here, but x === SubType.prototype how do you expect it to be its own prototype?

    – Kaiido
    1 hour ago











  • Updated my question, sorry about that type

    – Gautam
    1 hour ago











  • try console.log(x.isPrototypeOf(new SubType)) for example of how it's used.

    – dandavis
    1 hour ago








1




1





Not sure to get my head all clear here, but x === SubType.prototype how do you expect it to be its own prototype?

– Kaiido
1 hour ago





Not sure to get my head all clear here, but x === SubType.prototype how do you expect it to be its own prototype?

– Kaiido
1 hour ago













Updated my question, sorry about that type

– Gautam
1 hour ago





Updated my question, sorry about that type

– Gautam
1 hour ago













try console.log(x.isPrototypeOf(new SubType)) for example of how it's used.

– dandavis
1 hour ago





try console.log(x.isPrototypeOf(new SubType)) for example of how it's used.

– dandavis
1 hour ago












2 Answers
2






active

oldest

votes


















5














SubType is a function. What you probably want to check is if an instance of SubType would inherit from x:






function SuperType(){}

function SubType(){}

x = new SuperType();

SubType.prototype = x;
SubType.prototype.constructor = SubType;

const instance = new SubType();
console.log(x.isPrototypeOf(instance)) // returns true
console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true








share|improve this answer































    2














    It helps to add properties to the objects to see what's happening. I fixed a little of your code. You can run this in the console:



    function SuperType(foo){ this.foo = foo };
    function SubType(bar){ this.bar = bar };

    var x = new SubType("bar");

    SuperType.prototype = x;
    SuperType.prototype.constructor = SubType;


    Now, you asked x.isPrototypeOf(SuperType) and it returns false, because x is not a property of the class SuperType. But when you instantiate a SuperType, x is a property of that new object:



    var y = new SuperType("foo");
    console.log(x.isPrototypeOf(y)) // returns true


    In your example that is true, SubType.prototype is a prototype of SuperType.prototype and returns true.



    console.log(SubType.prototype.isPrototypeOf(SuperType.prototype)) // returns true





    share|improve this answer








    New contributor




    David Klinge is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.





















      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%2f55821319%2fwhy-isprototypeof-returns-false%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









      5














      SubType is a function. What you probably want to check is if an instance of SubType would inherit from x:






      function SuperType(){}

      function SubType(){}

      x = new SuperType();

      SubType.prototype = x;
      SubType.prototype.constructor = SubType;

      const instance = new SubType();
      console.log(x.isPrototypeOf(instance)) // returns true
      console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true








      share|improve this answer




























        5














        SubType is a function. What you probably want to check is if an instance of SubType would inherit from x:






        function SuperType(){}

        function SubType(){}

        x = new SuperType();

        SubType.prototype = x;
        SubType.prototype.constructor = SubType;

        const instance = new SubType();
        console.log(x.isPrototypeOf(instance)) // returns true
        console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true








        share|improve this answer


























          5












          5








          5







          SubType is a function. What you probably want to check is if an instance of SubType would inherit from x:






          function SuperType(){}

          function SubType(){}

          x = new SuperType();

          SubType.prototype = x;
          SubType.prototype.constructor = SubType;

          const instance = new SubType();
          console.log(x.isPrototypeOf(instance)) // returns true
          console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true








          share|improve this answer













          SubType is a function. What you probably want to check is if an instance of SubType would inherit from x:






          function SuperType(){}

          function SubType(){}

          x = new SuperType();

          SubType.prototype = x;
          SubType.prototype.constructor = SubType;

          const instance = new SubType();
          console.log(x.isPrototypeOf(instance)) // returns true
          console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true








          function SuperType(){}

          function SubType(){}

          x = new SuperType();

          SubType.prototype = x;
          SubType.prototype.constructor = SubType;

          const instance = new SubType();
          console.log(x.isPrototypeOf(instance)) // returns true
          console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true





          function SuperType(){}

          function SubType(){}

          x = new SuperType();

          SubType.prototype = x;
          SubType.prototype.constructor = SubType;

          const instance = new SubType();
          console.log(x.isPrototypeOf(instance)) // returns true
          console.log(SuperType.prototype.isPrototypeOf(SubType.prototype)) // returns true






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 1 hour ago









          KaiidoKaiido

          46.4k468109




          46.4k468109

























              2














              It helps to add properties to the objects to see what's happening. I fixed a little of your code. You can run this in the console:



              function SuperType(foo){ this.foo = foo };
              function SubType(bar){ this.bar = bar };

              var x = new SubType("bar");

              SuperType.prototype = x;
              SuperType.prototype.constructor = SubType;


              Now, you asked x.isPrototypeOf(SuperType) and it returns false, because x is not a property of the class SuperType. But when you instantiate a SuperType, x is a property of that new object:



              var y = new SuperType("foo");
              console.log(x.isPrototypeOf(y)) // returns true


              In your example that is true, SubType.prototype is a prototype of SuperType.prototype and returns true.



              console.log(SubType.prototype.isPrototypeOf(SuperType.prototype)) // returns true





              share|improve this answer








              New contributor




              David Klinge is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.

























                2














                It helps to add properties to the objects to see what's happening. I fixed a little of your code. You can run this in the console:



                function SuperType(foo){ this.foo = foo };
                function SubType(bar){ this.bar = bar };

                var x = new SubType("bar");

                SuperType.prototype = x;
                SuperType.prototype.constructor = SubType;


                Now, you asked x.isPrototypeOf(SuperType) and it returns false, because x is not a property of the class SuperType. But when you instantiate a SuperType, x is a property of that new object:



                var y = new SuperType("foo");
                console.log(x.isPrototypeOf(y)) // returns true


                In your example that is true, SubType.prototype is a prototype of SuperType.prototype and returns true.



                console.log(SubType.prototype.isPrototypeOf(SuperType.prototype)) // returns true





                share|improve this answer








                New contributor




                David Klinge is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.























                  2












                  2








                  2







                  It helps to add properties to the objects to see what's happening. I fixed a little of your code. You can run this in the console:



                  function SuperType(foo){ this.foo = foo };
                  function SubType(bar){ this.bar = bar };

                  var x = new SubType("bar");

                  SuperType.prototype = x;
                  SuperType.prototype.constructor = SubType;


                  Now, you asked x.isPrototypeOf(SuperType) and it returns false, because x is not a property of the class SuperType. But when you instantiate a SuperType, x is a property of that new object:



                  var y = new SuperType("foo");
                  console.log(x.isPrototypeOf(y)) // returns true


                  In your example that is true, SubType.prototype is a prototype of SuperType.prototype and returns true.



                  console.log(SubType.prototype.isPrototypeOf(SuperType.prototype)) // returns true





                  share|improve this answer








                  New contributor




                  David Klinge is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.










                  It helps to add properties to the objects to see what's happening. I fixed a little of your code. You can run this in the console:



                  function SuperType(foo){ this.foo = foo };
                  function SubType(bar){ this.bar = bar };

                  var x = new SubType("bar");

                  SuperType.prototype = x;
                  SuperType.prototype.constructor = SubType;


                  Now, you asked x.isPrototypeOf(SuperType) and it returns false, because x is not a property of the class SuperType. But when you instantiate a SuperType, x is a property of that new object:



                  var y = new SuperType("foo");
                  console.log(x.isPrototypeOf(y)) // returns true


                  In your example that is true, SubType.prototype is a prototype of SuperType.prototype and returns true.



                  console.log(SubType.prototype.isPrototypeOf(SuperType.prototype)) // returns true






                  share|improve this answer








                  New contributor




                  David Klinge is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.









                  share|improve this answer



                  share|improve this answer






                  New contributor




                  David Klinge is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.









                  answered 1 hour ago









                  David KlingeDavid Klinge

                  564




                  564




                  New contributor




                  David Klinge is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.





                  New contributor





                  David Klinge is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.






                  David Klinge is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.






























                      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%2f55821319%2fwhy-isprototypeof-returns-false%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

                      數位音樂下載

                      格利澤436b

                      When can things happen in Etherscan, such as the picture below?