ES5的用對象實現類的做用

// 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
相關文章
相關標籤/搜索