// js實現類 ES5 // 因爲函數始對象 因此寫法不是惟一 // function Pf(){}更符合固有思想 // 因爲ES6添加了類,因此書寫變得跟方便 var Pf = function(name,age){ // 私有屬性方法外面不能調用,只有對象方法能夠操做,從而起到保護數據的做用 // 私有屬性 var secret = '小祕密' // 私有方法 function secretfn(){ console.log('私有方法') console.log("my secret is"+secret) } // 公共屬性方法是每建立一個對象就會建立一個該屬性或方法(耗費必定把內存) // 共有實例屬性 this.name = name this.age = age //共有實例方法 this.say = function(){ console.log("my name is"+this.name,"my age is"+this.age) console.log('能夠操做私有屬性與方法') secretfn() } } // 靜態方法 Pf.f1 = function(){ console.log('我是靜態方法,只能用類直接調用,實例對象不能調用') } Pf.prototype = { constructor:Pf,// 這種添加原型方法須要重置制定對象。 // 原型鏈上的方法爲公有方法,由類建立出來的對象會指向該原型,不會從新建立該方法,可是優先級沒有對象方法高 // 其優勢是節省內存 say:function(){ console.log("原型上的say") // 原型鏈上能夠拿到共有屬性,拿不到私有屬性與方法 console.log('我也能拿到數據'+this.name) } } var a = new Pf('ss',22) a.say() Pf.f1() 運行直接node