Rumah > hujung hadapan web > tutorial js > Penjelasan terperinci tentang sifat awam, peribadi, statik dan kaedah kemahiran js object-oriented_javascript

Penjelasan terperinci tentang sifat awam, peribadi, statik dan kaedah kemahiran js object-oriented_javascript

WBOY
Lepaskan: 2016-05-16 16:03:27
asal
1260 orang telah melayarinya

Pada masa kini, JavaScript sangat popular Bagi pembangun laman web, JavaScript adalah bahasa yang mesti dikuasai Namun, dengan populariti dan penggunaan rangka kerja seperti jquery, ramai orang kurang memahami JavaScript asli dan terbiasa. untuk berfungsi Gaya penyuntingan sentiasa tidak jelas tentang penutupan dan prototaip. Ini adalah penggunaan berorientasikan objek js yang lemah, dan untuk memahami berorientasikan objek js, anda mesti terlebih dahulu memahami kaedah awam, kaedah istimewa dan kaedah statik dalam js

Kaedah/Langkah

1. Harta awam dan kaedah awam

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

Salin selepas log masuk

2. Harta dan kaedah persendirian

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

Salin selepas log masuk

3. Sifat dan kaedah statik

Dalam PHP, kaedah yang boleh dipanggil tanpa instantiasi dipanggil kaedah statik Begitu juga dengan JS Anda boleh memanggil kaedah dan sifat objek tanpa instantiasi, iaitu dengan menggunakan operator baharu untuk mewujudkan objek .

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

Salin selepas log masuk

4. Kaedah istimewa

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

Salin selepas log masuk

5. Kelas statik

Untuk kaedah statik dan atribut statik, kita tidak perlu menciptanya seperti dalam langkah ketiga Jika netizen telah membaca artikel saya "Cara membuat karusel imej dalam js", mereka akan tahu bahawa ia boleh dibuat menggunakan. literal.

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

Salin selepas log masuk

6. Peraturan panggilan untuk kaedah awam

Untuk memanggil kaedah awam, kita mesti membuat seketika objek itu

Dalam kaedah awam, sifat awam dan kaedah istimewa dipanggil tanpa kaedah dan sifat statik tidak boleh dipanggil menggunakan ini Ia mesti dipanggil melalui objek itu sendiri, iaitu nama objek. Kaedah awam tidak boleh memanggil kaedah peribadi

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

Salin selepas log masuk

7. Peraturan panggilan kaedah statik

Apabila menggunakan kaedah statik, anda boleh memanggilnya tanpa membuat seketika objek objek tidak boleh memanggil kaedah statik objek, hanya sifat statik dan kaedah tika itu sendiri

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

Salin selepas log masuk

Kaedah statik tidak boleh memanggil sifat awam, kaedah awam, kaedah persendirian, sifat persendirian, kaedah istimewa dan sifat prototaip

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

Salin selepas log masuk

8. Peraturan panggilan untuk kaedah istimewa

Kaedah istimewa memanggil kaedah awam dan sifat awam melalui ini, memanggil kaedah dan sifat statik melalui objek itu sendiri, dan secara langsung memanggil sifat peribadi dan kaedah persendirian dalam badan kaedah

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

Salin selepas log masuk

9 Kaedah persendirian

Kaedah dan sifat peribadi objek tidak boleh diakses dari luar Di dalam kaedah, anda tidak boleh memanggil kaedah awam, sifat awam dan kaedah istimewa objek

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();
Salin selepas log masuk

Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan