js対象に向かう公有、私有、静的属性及び方法の詳細解


現在、javascriptは大道を行っています。ウェブサイトの開発者にとって、javascriptは根拠を持たなければならない言語です。しかし、jqueryなどのフレームワークの流行と使用に従って、多くの人は元のjavascriptに対して深い理解が不足しています。関数式の編集スタイルに慣れています。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.静態類
静的な方法と静的な属性については、第三歩のように作成する必要はありません。もしユーザーが私の「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を用いずに公有属性と特権方法を呼び出すことにより、静的方法と属性を呼び出すことができず、オブジェクト自身で呼び出す、すなわちオブジェクト名を裁断しなければならない。共有方法もプライベートメソッドを呼び出すことができません。

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.プライベート方法
オブジェクトのプライベート方法と属性は、外部はアクセスできません。メソッドの内部では、オブジェクトの共有方法、共有属性、特権方法を呼び出すことができません。

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();
以上述べましたが、本文の内容は全部です。お好きになってください。