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

  • Home
  • SEARCH
  • 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 529909
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T09:08:26+00:00 2026-05-13T09:08:26+00:00

I prefer to use functional OOP style for my code (similar to the module

  • 0

I prefer to use functional OOP style for my code (similar to the module pattern) because it helps me to avoid the “new” keyword and all problems with the scope of “this” keyword in callbacks.

But I’ve run into a few minor issues with it. I would like to use the following code to create a class.

namespace.myClass = function(){
  var self = {},
      somePrivateVar1;

  // initialization code that would call
  // private or public methods
  privateMethod();
  self.publicMethod(); // sorry, error here

  function privateMethod(){}

  self.publicMethod = function(){};

  return self;
}

The problem is that I can’t call public methods from my initialization code, as these functions are not defined yet. The obvious solution would be to create an init method, and call it before “return self” line. But maybe you know a more elegant solution?

Also, how do you usually handle inheritance with this pattern? I use the following code, butI would like to hear your ideas and suggestions.

namespace.myClass2 = function(){
  var self = namespace.parentClass(),
      somePrivateVar1;            

  var superMethod = self.someMethod;
  self.someMethod = function(){
    // example shows how to overwrite parent methods
    superMethod();
  };

  return self;
}

Edit.
For those who asked what are the reasons for choosing this style of OOP, you can look into following questions:

  • Prototypal vs Functional OOP in JavaScript
  • Is JavaScript's "new" keyword considered harmful?
  • 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-05-13T09:08:27+00:00Added an answer on May 13, 2026 at 9:08 am

    I agree with almost every comment or answer provided so far, but to take Tim’s answer one step further – he questioned why you’d want to call a method before it was defined, but offered a solution anyway, whereas I’d suggest you shouldn’t call before defining (I don’t know of any language where calling a method prior to defining it or at least declaring it is considered good practice), so how about:

    namespace.myClass = function(){  
      //declare private vars (and self) first
      var self = {},  
          somePrivateVar1;  
    
      //then declare private methods
      function privateMethod(){}  
    
      //then public/privileged methods
      self.publicMethod = function(){};  
    
      // THEN (and only then) add your 
      // initialization code that would call  
      // private or public methods  
      privateMethod();  
      self.publicMethod(); // no error any more
    
      //then return the new object
      return self;  
    } 
    

    Is there a particular reason why this would not work for you?

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

Sidebar

Related Questions

When I prefer to use WITH (NOLOCK) in all the SQL queries inside a
I would prefer to use .slideToggle and 3 lines of code but not sure
I am a web and mobile application developer and I prefer to use MVC
Possible Duplicate: When should one use final? When should Java programmers prefer to use
Are there any way to do so? I prefer to use VB.NET or Java
Is it possible to develop iphone apps with java? I'd prefer to use alchemo
Which version would you prefer? #!/usr/bin/env perl use warnings; use strict; use 5.010; my
Currently we have an application who use spring who support mysql. Some people prefer
This page says to use: var object = $.extend({}, object1, object2); But I prefer
I was wondering if this is an 'unwholesome' use of a factory pattern, or

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.