Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8411655
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 10, 20262026-06-10T00:28:33+00:00 2026-06-10T00:28:33+00:00

If I understand correctly, each and every object in JavaScript inherits from the Object

  • 0

If I understand correctly, each and every object in JavaScript inherits from the Object prototype, which means that each and every object in JavaScript has access to the hasOwnProperty function through its prototype chain.

While reading RequireJS‘ source code, I stumbled upon this function:

function hasProp(obj, prop) {
    return hasOwn.call(obj, prop);
}

hasOwn is a reference to Object.prototype.hasOwnProperty. Is there any practical difference to writing this function as

function hasProp(obj, prop) {
    return obj.hasOwnProperty(prop);
}

And since we are at it, why do we define this function at all? Is it just a question of shortcuts and local caching of property access for (slight) performance gains, or am I missing any cases where hasOwnProperty might be used on objects which don’t have this method?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-10T00:28:35+00:00Added an answer on June 10, 2026 at 12:28 am

    Is there any practical difference [between my examples]?

    The user may have a JavaScript object created with Object.create(null), which will have a null [[Prototype]] chain, and therefore won’t have hasOwnProperty() available on it. Using your second form would fail to work for this reason.

    It’s also a safer reference to Object.prototype.hasOwnProperty() (and also shorter).

    You can imagine someone may have done…

    var someObject = {
        hasOwnProperty: function(lol) {
            return true;
        }
    };
    

    Which would make a hasProp(someObject) fail had it been implemented like your second example (it would find that method directly on the object and invoke that, instead of being delegated to Object.prototype.hasOwnProperty).

    But it’s less likely someone will have overridden the Object.prototype.hasOwnProperty reference.

    And since we are at it, why do we define this function at all?

    See above.

    Is it
    just a question of shortcuts and local caching of property access for
    (slight) performance gains…

    It may make it quicker in theory, as the [[Prototype]] chain doesn’t have to be followed, but I suspect this to be negligible and not the reason the implementation is why it is.

    … or am I missing any cases where
    hasOwnProperty might be used on objects which don’t have this method?

    hasOwnProperty() exists on Object.prototype, but can be overridden. Every native JavaScript object (but host objects are not guaranteed to follow this, see RobG’s in-depth explanation) has Object.prototype as its last object on the chain before null (except of course for the object returned by Object.create(null)).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

If I understand it correctly this means extern void foo(); that the function foo
If I understand correctly, in .NET the default implementation of Object.GetHashCode() returns a value
Do I understand correctly that CCLabelBMFont only loads the font texture once, no matter
I'm trying to identify which OSX application is currently active. I understand that in
I'm running mod_python under Apache. If I've understood correctly, each Apache process runs its
This is just a quick question to understand correctly what happens when you create
If I understand this correctly, the program counter points to the address of the
Been trying my best to understand this correctly. What is the difference between an
Why does this not work? Do I not understand delegate covariance correctly? public delegate
I am not sure if I understand the usage of crossdomain.xml correctly. I am,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.