Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung der öffentlichen, privaten, statischen Eigenschaften und Methoden der objektorientierten Javascript-Kenntnisse von js

WBOY
Freigeben: 2016-05-16 16:03:27
Original
1231 Leute haben es durchsucht

JavaScript ist heutzutage eine sehr beliebte Sprache für Website-Entwickler. Aufgrund der Beliebtheit und Verwendung von Frameworks wie JQuery mangelt es vielen Menschen an fundierten Kenntnissen von nativem JavaScript zu funktional Der Bearbeitungsstil ist bei Verschlüssen und Prototypen immer unklar. Es ist eine schlechte Verwendung von js objektorientiert, und um js objektorientiert zu verstehen, müssen Sie zunächst verstehen, was öffentliche Methoden, privilegierte Methoden und statische Methoden in js sind

Methode/Schritte

1. Öffentliche Eigenschaften und öffentliche Methoden

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子海

Nach dem Login kopieren

2. Private Eigenschaften und Methoden

function User(name,age){
  var name = name;//私有属性
  var age = age;
  function alertAge(){//私有方法
     alert(age);
  }
  alertAge(age); //弹出26
}
var user = new User('fire子海',26);

Nach dem Login kopieren

3. Statische Eigenschaften und Methoden

In PHP werden Methoden, die ohne Instanziierung aufgerufen werden können, als statische Methoden bezeichnet. Das Gleiche gilt für JS. Sie können die Methoden und Eigenschaften des Objekts ohne Instanziierung aufrufen, d. h. indem Sie den neuen Operator verwenden, um das Objekt zu materialisieren .

function User(){}
User.age = 26;//静态属性
User.myname = 'fire子海';
User.getName =function(){//静态方法
 
  return this.myname;//如果这里使用this.name,返回的将是User,所有改用了myname,
}
console.log(User.getName());//output:fire子海

Nach dem Login kopieren

4. Privilegierte Methoden

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子海

Nach dem Login kopieren

5. Statische Klasse

Für statische Methoden und statische Attribute müssen wir sie nicht wie im dritten Schritt erstellen. Wenn Internetnutzer meinen Artikel „So erstellen Sie ein Bildkarussell in js“ gelesen haben, wissen sie, dass sie mit erstellt werden können Literale.

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子海

Nach dem Login kopieren

6. Aufrufregeln für öffentliche Methoden

Um öffentliche Methoden aufzurufen, müssen wir zuerst das Objekt instanziieren

In öffentlichen Methoden können öffentliche Eigenschaften und privilegierte Methoden nicht aufgerufen werden. Sie müssen über das Objekt selbst aufgerufen werden, dh über den Objektnamen. Öffentliche Methoden können keine privaten Methoden aufrufen

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:晚餐只有方便面

Nach dem Login kopieren

7. Statische Methodenaufrufregeln

Wenn Sie statische Methoden verwenden, können Sie diese aufrufen, ohne das Objekt zu instanziieren. Objektinstanzen können keine statischen Methoden des Objekts aufrufen, sondern nur die statischen Eigenschaften und Methoden der Instanz selbst

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();//晚餐只有方便面

Nach dem Login kopieren

Statische Methoden können keine öffentlichen Eigenschaften, öffentlichen Methoden, privaten Methoden, privaten Eigenschaften, privilegierten Methoden und Prototypeigenschaften aufrufen

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

Nach dem Login kopieren

8. Aufrufregeln für privilegierte Methoden

Privilegierte Methoden rufen dadurch öffentliche Methoden und öffentliche Eigenschaften auf, rufen statische Methoden und Eigenschaften über das Objekt selbst auf und rufen private Eigenschaften und private Methoden direkt im Methodenkörper auf

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:我的女朋友某某是美女!

Nach dem Login kopieren

9. Private Methoden

Auf die privaten Methoden und Eigenschaften des Objekts kann von außen nicht zugegriffen werden. Innerhalb der Methode können Sie die öffentlichen Methoden, öffentlichen Eigenschaften und privilegierten Methoden des Objekts nicht aufrufen

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();
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage