js中的類


// es5中的類
// a.最簡單的類
    // function Person(){
    //     this.name = 'zhangsan';
    //     this.age = 18;
    // }
    // var p = new Person();
    // console.log(p.anme);

// b.構造函數和原型鏈里面增加方法
    // function Person(){
    //     this.name = 'zhangsan';
    //     this.age = 18;
    //     this.run = function(){
    //         console.log(this.name+'在run');
    //     }
    // }
    // 原型鏈上面的屬性會被多個實例共享 構造函數不會
    // Person.prototype.sex = '男'; /* 屬性 */
    // Person.prototype.work = function(){ /* 實例方法 */
    //     console.log(this.name+'在work');
    // }
    // var p = new Person();
    // p.run();
    // p.work();

// c.類里面的靜態方法
    // function Person(){
    //     this.name = 'zhangsan';
    //     this.age = 18;
    //     this.run = function(){
    //         console.log(this.name+'在run');
    //     }
    // }
    // Person.getGo = function(){
    //     console.log('我是靜態方法')
    // }
    // Person.getGo(); /*調用靜態方法 */

// d.es5里面的繼承
    // function Person(){
    //     this.name = 'zhangsan';
    //     this.age = 18;
    //     this.run = function(){
    //         console.log(this.name+'在run');
    //     }
    // }
    // Person.prototype.sex = '男'; /* 屬性 */
    // Person.prototype.work = function(){ /* 實例方法 */
    //     console.log(this.name+'在work');
    // }
    // // 定義一個 web類繼承 Person類 (原型鏈+對象冒充的組合模式)
    // function Web(){
    //     Person.call(this)  /* 對象冒充實現繼承*/
    // }
    // var w = new Web();
    // w.run(); //對象冒充可以繼承構造函數里面的屬性和方法
    // w.work(); //但是不能繼承原型鏈上邊的屬性和方法

// e.es5里的繼承  原型鏈實現繼承
    // function Person(){
    //     this.name = 'zhangsan';
    //     this.age = 18;
    //     this.run = function(){
    //         console.log(this.name+'在run');
    //     }
    // }
    // Person.prototype.sex = '男'; /* 屬性 */
    // Person.prototype.work = function(){ /* 實例方法 */
    //     console.log(this.name+'在work');
    // }
    // // 定義一個 web類繼承 Person類 (原型鏈+對象冒充的組合模式)
    // function Web(){}
    //  //原型鏈實現繼承:可以繼承構造函數里面的方法和屬性  也可以繼承原型鏈上邊的屬性和方法
    // Web.prototype = new Person();
    // var w = new Web();
    // w.work(); //

// f.原型鏈實現繼承的   問題?
    // function Person(name,age){
    //     this.name = name;
    //     this.age = age;
    //     this.run = function(){
    //         console.log(this.name+'在run');
    //     }
    // }
    // Person.prototype.sex = '男'; /* 屬性 */
    // Person.prototype.work = function(){ /* 實例方法 */
    //     console.log(this.name+'在work');
    // }
    // // 定義一個 web類繼承 Person類 (原型鏈+對象冒充的組合模式)
    // function Web(name,age){}
    // //原型鏈實現繼承:可以繼承構造函數里面的方法和屬性  也可以繼承原型鏈上邊的屬性和方法
    // Web.prototype = new Person();
    // var w = new Web('xiaolin',18); //實例化子類的時候不能給父類傳參
    // var w1 = new Web('xiaohong',17);
    // w.work(); //undefined在work

// g.原型鏈+構造函數 的組合繼承模式
    function Person(name,age){
        this.name = name;
        this.age = age;
        this.run = function(){
            console.log(this.name+'在run');
        }
    }
    Person.prototype.sex = '男'; /* 屬性 */
    Person.prototype.work = function(){ /* 實例方法 */
        console.log(this.name+'在work');
    }
    // 定義一個 web類繼承 Person類 (原型鏈+對象冒充的組合模式)
    function Web(name,age){
        Person.call(this,name,age) //對象冒充繼承 實例化子類可以給父類傳參
    }
    //原型鏈實現繼承:可以繼承構造函數里面的方法和屬性  也可以繼承原型鏈上邊的屬性和方法
    Web.prototype = new Person();   //或者  Web.prototype = Person.prototype;
    var k = new Web('小米',20);
    k.run(); //小米在run
    k.work(); //小米在work

 


免責聲明!

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



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