js面向對象基本理解和三種創建方式

面向對象的語言有一個標誌,那就是他們都有類的概念,通過類可以創建任意多個具有相同屬性和方法的對象。

但是在ECMAScript中沒有類的概念,但是我們可以通過其他方式來模擬面向對象的類。

工廠模式:工廠模式是軟件工廠領域中一種廣爲人知的設計模式。

構造函數模式:比如像ECMAScript中的Array、Object、Date等都是通過構造函數來創建的。

//1.工廠模式
      function Person(name,age,sex){
        var obj = new Object();
        obj.name = name;
        obj.age = age;
        obj.sex = sex;
        obj.sayName = function(){
          console.log(this.name);
        }
        return obj;
      }
      var p = Person('小一',20,'男');
      console.log(p.age);
      p.sayName();


      //2.構造函數模式
      function Person(name,age,sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.sayName = function(){
          console.log(this.sex);
        }
      }

      var p = new Person('小兒',25,'女');
      console.log(p.age);
      p.sayName();

      //3.js的方式創建對象方式
      function Person(name,age,sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.sayName = function(){
          console.log(this.sex);
        }
      }

      //1.當作構造函數去使用
      var obj = new Person('小兒',25,'女');
      console.log(obj.sex);

      //2.當作一個普通函數去調用
      Person('小兒',25,'女');  //在全局環境裏定義屬性並賦值,直接定義在window上
      console.log(name);

      //3.利用call apply方式
      var o = new Object();
      Person.call(o,'老大',123,'男');
      console.log(o.age);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章