SitePoint Sponsor

User Tag List

Results 1 to 5 of 5
  1. #1
    SitePoint Evangelist runeveryday's Avatar
    Join Date
    Jul 2009
    Posts
    437
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    everything is an object

    why everybody says "everything is an object" in javascript. can't understand this sentence, hope someone can explain it to me. the more detail,the better.
    Outdoor tools online store and wargame tools shop
    with best quality and service.
    comp molle tactical vest tactical clothing etc sell

  2. #2
    SitePoint Addict
    Join Date
    Dec 2008
    Location
    Brussels
    Posts
    377
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Good question.

    Aswel, what then makes the difference between OO programming and regular structured programming?
    http://www.sitepoint.com/forums/showthread.php?t=684950

  3. #3
    SitePoint Wizard Stomme poes's Avatar
    Join Date
    Aug 2007
    Location
    Netherlands
    Posts
    10,283
    Mentioned
    51 Post(s)
    Tagged
    2 Thread(s)
    Well, in Javascript just about everything IS an object... object here meaning "a glob of stuff" (pretty broad, I know) which follows certain rules. For now, keep this separate from object-oriented programming... that is somewhat different.

    So with a "glob of stuff that follows certain rules", a real-world example might be the Animals example (yeah also used in OO programming I know). If you define something as an Animal, you know you're not going to be thinking of Rocks or Plants or whatever... because certain properties are inherently "Animal-ish" (they are alive... they can't make food from the sun... whatever).

    So the primitive types in Javascript (Strings, Numbers, Booleans...) are objects in that they have their own methods and properties. Every time you say something like
    var foo = "bar";
    you've made something that ultimately is a type of object (what kind of object? a String, so you could later come around and perform String.methods on foo if you want, like counting chars and splitting them etc).

    A function is an object. An array is an object. A primitive is an object. And then, there are the ones you make yourself.

    var Foo = {};

    Foo.bar = something;

    Foo.baz = something;

    You can add whatever you want to this newly minted Foo object. You can make new Foos and they can all have the same stuff you gave your original Foo.

    var Fu = new Foo();

    (now you don't have to say
    Fu.bar = something; or
    Fu.baz = something;
    cause unless you say otherwise, they are already there)

    Javascript is a little special in that the way baby Foos can have the same methods and properties of the first Foo is via Prototyping... the way Javascript passes information from one object to another object (inheritance... known here as "prototypical inheritance"). Most other languages use Classes for this (classical inheritance)... very similar but not exactly the same.

    Basically, object-oriented programming is using these Objects (whether you create them or they are any of the native ones pre-built into the language) to interact with each other, share methods, do jobs together and separately....
    as opposed to having some long list of instructions that Do Stuff (imperative programming... imperative means "to command").

    Remember with Javascript you can also do Functional programming, which it's also very suited to because almost everything is a function (and the functions are objects) and functions are first-class (they're already built into the language and you can pretty much do what you want with them). So, you can have closures, recursion, and if you want you can go ahead and calculate stuff and just store the results somewhere (they don't have to Do Anything) or give those results to another function as an argument.

    Now I likely have some things not entirely correct so a guru should come in here to elaborate : )

  4. #4
    SitePoint Evangelist runeveryday's Avatar
    Join Date
    Jul 2009
    Posts
    437
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    stomme
    in your answer,you said i can make new Foos and they can all have the same stuff you gave your original Foo.

    why in this code,
    var Fu = new Foo();
    there is no Foos ?
    Outdoor tools online store and wargame tools shop
    with best quality and service.
    comp molle tactical vest tactical clothing etc sell

  5. #5
    SitePoint Wizard Stomme poes's Avatar
    Join Date
    Aug 2007
    Location
    Netherlands
    Posts
    10,283
    Mentioned
    51 Post(s)
    Tagged
    2 Thread(s)
    Sorry, if we were speaking Dutch it would have made more sense because apostrophes are used for plurals sometimes : ) "Foos" meant "more things called Foo", or, just a plural of "Foo". The first object was called Foo. If it was called "Car" then the others would have been "Cars" (meaning, many Car objects).

    So Fu is an object who inherits from Foo. Speaking casually, I could call it a type of Foo. If I have a bunch of objects inheriting from Foo, I might refer to them as "Foos" to a colleague.


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •