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子海
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);
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子海
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子海
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子海
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:晚餐只有方便面
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();//晚餐只有方便面
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
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:我的女朋友某某是美女!
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();
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.