JS中對象的特征:封裝(函數)


面向對象的特征
1、第一個特征:封裝
1.1概念:隱藏實現細節的過程
1.2優點:重用和隱藏細節
Java里面有權限修飾符,但是JS里面沒有,JS所有的屬性都是公共的,為了讓屬性私有化,就有相應方法:
第一種:定義一個私有變量,結合get/set函數

function Student(name,age,phone){
    this.name = name;//公共屬性
    this.age = age;//公共屬性
    let _phone = phone;//私有屬性
    this.setPhone = function(phone){
        console.log("1");
        _phone = phone;//設置私有屬性
    }
    this.getPhone = function(){
        console.log("2");
        return _phone;//獲取私有屬性
    }
}
let s1 = new Student("關羽",19,322);
s1.setPhone(123);//修改私有屬性,因為調用了setPhone函數此時會輸出1
console.log(s1.name,s1.age,s1.getPhone()); 
//因為調用了getPhone函數,會先輸出2,再輸出關羽 19 123 

第二種 defineProperty方法

function Teacher(name,age,hoby){
this.name = name;
this.age = age;
this.hoby = hoby;
}
Object.defineProperty(Teacher.prototype,"name",{
set:function(name){
    _name = name;
},
get:function(){
    if (this.age > 30) {
        return "大齡" + _name;
    }
    return _name;
}
})
let T1 = new Teacher("張飛",32,"游泳");
console.log(T1.name,T1.age,T1.hoby);
//輸出  大齡張飛  32  游泳

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM