js object oriented public private static properties and methods

  • 2020-05-30 19:25:03
  • OfStack

Currently, javascript is very popular. For web developers, javascript is a necessary language to master. However, with the popularity and use of frameworks such as jquery, many people lack a deep understanding of native javascript, are used to the functional editing style, and are always confused about closures and prototypes. For the poor use of js object-oriented, to understand js object-oriented, you must first understand what js public methods, privileged methods, static methods are

Methods/steps

1. Public properties and methods


function User(name,age){
  this.name = name;// Public attribute 
  this.age = age;
}
User.prototype.getName = function(){// Public methods 
  return this.name;
}
var user = new User('fire Sub sea ',26);
console.log(user.getName());//output:fire Sub sea 

2. Private properties and methods


function User(name,age){
  var name = name;// Private property 
  var age = age;
  function alertAge(){// Private methods 
     alert(age);
  }
  alertAge(age); // The pop-up 26
}
var user = new User('fire Sub sea ',26);

3. Static properties and methods

In php, the methods that can be called without instantiation are called static methods, and js is the same. Without instantiation, the methods and properties of an object can be called using the new operation.


function User(){}
User.age = 26;// Static attributes 
User.myname = 'fire Sub sea ';
User.getName =function(){// A static method 
 
  return this.myname;// If I use this.name , the return is going to be User All of them have switched over myname . 
}
console.log(User.getName());//output:fire Sub sea 

4. Privileged methods


function User(name,age){
  var name = name;// Private property 
  var age = age;
  this.getName = function(){ // Privilege method 
     return name;// Private properties and methods cannot be used this call 
  }
}
var user = new User('fire Sub sea ',26);
console.log(user.getName());//output:fire Sub sea 

5. A static class

For static methods and static properties, we don't need to create them as we did in step 3. If you've seen my article "how to make js images", you can create them using literal values.


var user = {
  init:function(name,age){
   this.name = name;
   this.age = age;
  },
  getName:function(){
   return this.name;
 }
}
user.init('fire Sub sea ',26);
console.log(user.getName());//output:fire Sub sea 

6. Rules for calling public methods

To call a public method, we must first instantiate the object

Public methods do not call public properties and privileged methods by this, and static methods and properties cannot be called by this. They must be called by the object itself, that is, the object name. Public methods also cannot call private methods


function User(){
  this.myname = 'fire Sub sea ';// Public attribute 
  this.age = 26;
  this.do = function(){// Privilege method 
    return this.myname+' learning js';
  }
}
User.eat = function(food){
 return ' Dinner only '+food;
}
User.prototype.alertAge = function(){
  alert(this.age);
}
User.prototype.alertDo = function(){
  alert(this.do());// Calling privileged methods 
}
User.prototype.alertEat = function(food){
  alert(User.eat(food));// You can only call static methods through the object itself 
  //alert(this.ear(food)) This call will cause an error :this.eat is not a function
}
var user = new User();
user.alertAge();//alert:26
user.alertDo();//alert:fire Child learn js
user.alertEat(' The instant noodles ')//alert: Only instant noodles for dinner 

7. Rules for calling static methods

When using static methods, the object can be called without instantiating the object. The object instance cannot call the static method of the object, but can only call the static properties and methods of the instance itself


function User(){}
User.age = 26;// Static attributes 
User.myname = 'fire Sub sea ';
User.getName =function(){// A static method 
 
  return this.myname;
}
var user = new User();
console.log(user.getName);//TypeError: user.getName is not a function
user.supper = ' The instant noodles ';
user.eat = function(){
 return ' Dinner only '+this.supper;
}
user.eat();// Only instant noodles for dinner 

Static methods cannot call public properties, public methods, private methods, private properties, privileged methods, and stereotype properties


function User(){
    this.myname = 'fire Sub sea ';// Public attribute 
    this.age = 26;
    this.do = function(){// Privilege method 
      return this.myname+' learning js';
    }
}
User.prototype.alertAge = function(){// Public methods, also known as prototype methods 
  alert(this.age);
}
User.prototype.sex = ' male ';// The prototype property 
User.getName= function(){// A static method 
  return this.myname;
}
User.getAge = function(){
   this.alertAge();
 
}
User.getDo = function(){
  return this.do();
}
//console.log(User.getName())//undefined
//console.log(User.getDo());//TypeError: this.do is not a function
//console.log(User.getAge())//TypeError: this.alertAge is not a function

8. Rules for calling privileged methods

Privileged methods call public methods and public properties through this, static methods and properties through the object itself, and private properties and private methods directly within the method body


function User(girlfriend){
   var girlfriend = girlfriend;
   function getGirlFriend(){ 
     return ' My girlfriend '+girlfriend+' Is beauty! ';
   }
  this.myname = 'fire Sub sea ';// Public attribute 
  this.age = 26;
  this.do = function(){// Privilege method 
    return this.myname+' learning js';
  }
  this.alertAge = function(){
   this.changeAge();// Privileged methods call public methods 
    alert(this.age);
  }
  this.alertGirlFriend = function(){
   alert(getGirlFriend());// Calling a private method 
  }
}
User.prototype.changeAge = function(){
  this.age = 29;
}
var user = new User(' so-and-so ');
user.alertAge();//alert:29
user.alertGirlFriend();//alert: My girlfriend so-and-so is a beautiful girl! 

9. Private methods

The private methods and properties of the object are not accessible externally, and the public methods, public properties and privileged methods of the object cannot be called by this within the method


function User(girlfriend){
   var girlfriend = girlfriend;
  this.myname = 'fire Sub sea ';// Public attribute 
  this.age = 26;
  function getGirlFriend(){ 
   //this.myname ;// At this time this Point to the window Object, not User Object, 
    // this.myname = 'fire Sub sea ', At this time this Points to the getGirFriend The object. 
  // If through this Call the getGirFriend Methods that don't exist, properties, this Can point to window  Object, only this Call the getGirlFriend Existing methods and properties, this To be specified getGirlFriend;
     alert(User.eat(' Instant noodles '));//alert Only instant noodles for dinner 
  }
  this.do = function(){// Privilege method 
    return this.myname+' learning js';
  }
  this.alertAge = function(){
   this.changeAge();// Privileged methods call public methods 
    alert(this.age);
  }
  this.alertGirlFriend = function(){
   getGirlFriend();// Calling a private method 
  }
}
User.eat = function(supper){
 return ' Dinner only '+supper;
}
var user = new User(' so-and-so ');
user.alertGirlFriend();

That's all for this article, I hope you enjoy it.


Related articles: