面向對象的特征 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 游泳
