jsオブジェクト向けの公有、プライベート、静的属性、およびメソッドの詳細

6450 ワード

現在、javascriptは大いに発展しており、ウェブサイト開発者にとってjavascriptは根拠を持たなければならない言語であるが、jqueryなどのフレームワークの流行と使用に伴い、多くの人が原生javascriptに対して深い理解に欠け、関数式の編集スタイルに慣れており、閉パッケージ、原型についてはいつもはっきりしない.jsが対象に向かって下手に使っている場合、jsがオブジェクトに向いていることを理解するには、jsの公有メソッド、特権メソッド、静的メソッドとは何かを理解する必要があります.
方法/手順
1.公有属性と公有方法

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


2.プライベート属性とメソッド

function User(name,age){
  var name = name;//    
  var age = age;
  function alertAge(){//    
     alert(age);
  }
  alertAge(age); //  26
}
var user = new User('fire  ',26);


3.静的属性と方法
phpでは、インスタンス化を必要とせずに呼び出す方法を静的メソッドと呼び、jsも同様に、インスタンス化を必要とせず、すなわちnewオペレータでオブジェクトをインスタンス化することで、オブジェクトのメソッドと属性を呼び出すことができる.

function User(){}
User.age = 26;//    
User.myname = 'fire  ';
User.getName =function(){//    
 
  return this.myname;//      this.name,     User,     myname,
}
console.log(User.getName());//output:fire  


4.特権方法

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


5.静的クラス
静的メソッドと静的プロパティについては、3番目のステップのように作成する必要はありません.もしネットユーザーが私の「jsがどのようにピクチャのマルチキャストを作成するか」を見たら、字面量を使って作成できることがわかります.

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


6.公有メソッドの呼び出しルール
パブリックメソッドを呼び出すには、まずオブジェクトをインスタンス化する必要があります.
公有メソッドでは、公有属性と特権メソッドをthisで呼び出さないことで、thisを使用して静的メソッドと属性を呼び出すことはできません.オブジェクト自体で呼び出されるオブジェクト名を裁断する必要があります.パブリックメソッドもプライベートメソッドを呼び出すことはできません

function User(){
  this.myname = 'fire  ';//    
  this.age = 26;
  this.do = function(){//    
    return this.myname+'  js';
  }
}
User.eat = function(food){
 return '    '+food;
}
User.prototype.alertAge = function(){
  alert(this.age);
}
User.prototype.alertDo = function(){
  alert(this.do());//      
}
User.prototype.alertEat = function(food){
  alert(User.eat(food));//              
  //alert(this.ear(food))       :this.eat is not a function
}
var user = new User();
user.alertAge();//alert:26
user.alertDo();//alert:fire    js
user.alertEat('   ')//alert:       


7.静的メソッドの呼び出し規則
静的メソッドを使用する場合、オブジェクトをインスタンス化する必要がなく、呼び出すことができます.オブジェクトインスタンスはオブジェクトの静的メソッドを呼び出すことができません.インスタンス自体の静的プロパティとメソッドのみを呼び出すことができます.

function User(){}
User.age = 26;//    
User.myname = 'fire  ';
User.getName =function(){//    
 
  return this.myname;
}
var user = new User();
console.log(user.getName);//TypeError: user.getName is not a function
user.supper = '   ';
user.eat = function(){
 return '    '+this.supper;
}
user.eat();//       


静的メソッドでは、共有プロパティ、共有メソッド、プライベートメソッド、プライベートプロパティ、特権メソッド、プロトタイププロパティを呼び出すことはできません.

function User(){
    this.myname = 'fire  ';//    
    this.age = 26;
    this.do = function(){//    
      return this.myname+'  js';
    }
}
User.prototype.alertAge = function(){//    ,      
  alert(this.age);
}
User.prototype.sex = ' ';//    
User.getName= function(){//    
  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.特権メソッドの呼び出しルール
特権メソッドはthisによって公有メソッド、公有プロパティを呼び出し、オブジェクト自体によって静的メソッドとプロパティを呼び出し、メソッド内でプライベートプロパティとプライベートメソッドを直接呼び出します.

function User(girlfriend){
   var girlfriend = girlfriend;
   function getGirlFriend(){ 
     return '    '+girlfriend+'   !';
   }
  this.myname = 'fire  ';//    
  this.age = 26;
  this.do = function(){//    
    return this.myname+'  js';
  }
  this.alertAge = function(){
   this.changeAge();//          
    alert(this.age);
  }
  this.alertGirlFriend = function(){
   alert(getGirlFriend());//      
  }
}
User.prototype.changeAge = function(){
  this.age = 29;
}
var user = new User('  ');
user.alertAge();//alert:29
user.alertGirlFriend();//alert:          !


9.プライベートメソッド
オブジェクトのプライベートメソッドとプロパティは、外部からアクセスできません.メソッドの内部では、thisがオブジェクトを呼び出すことができる公有メソッド、公有プロパティ、特権メソッドではありません.

function User(girlfriend){
   var girlfriend = girlfriend;
  this.myname = 'fire  ';//    
  this.age = 26;
  function getGirlFriend(){ 
   //this.myname ;//   this   window  ,  User  ,
    // this.myname = 'fire  ',   this    getGirFriend   。
  //    this   getGirFriend          ,this    window   ,  this   getGirlFriend        ,this    getGirlFriend;
     alert(User.eat('  '));//alert:       
  }
  this.do = function(){//    
    return this.myname+'  js';
  }
  this.alertAge = function(){
   this.changeAge();//          
    alert(this.age);
  }
  this.alertGirlFriend = function(){
   getGirlFriend();//      
  }
}
User.eat = function(supper){
 return '    '+supper;
}
var user = new User('  ');
user.alertGirlFriend();

以上が本文のすべてですが、お好きになってください.