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子海
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);
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子海
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子海
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子海
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:晚餐只有方便面
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();//晚餐只有方便面
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
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:我的女朋友某某是美女!
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();
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.