JS中多種方式創(chuàng)建對象詳解

字號:


    下面小編就為大家?guī)硪黄狫S中多種方式創(chuàng)建對象詳解。小編覺得挺不錯的?,F(xiàn)在分享給大家,給大家一個參考。
    1.內(nèi)置對象創(chuàng)建
    var girl=new Object(); 
      girl.name='hxl'; 
      console.log(typeof girl); 
    2.工廠模式,寄生構(gòu)造函數(shù)模式
    function Person(name){ 
        var p=new Object();//內(nèi)部進行實例化 
        p.name=name; 
        p.say=function(){ 
          console.log('my name is '+ p.name); 
        } 
        return p;//注:一定要返回 
    } 
    var girl=Person('haoxioli'); 
    girl.say(); 
    3.構(gòu)造函數(shù)創(chuàng)建
    var Product=function(name){ 
        this.name=name; 
        this.buy=function(){ 
          console.log('我衣服的牌子是'+this.name); 
        } 
    } 
      var pro=new Product('真維斯'); 
      pro.buy(); 
    4.原型創(chuàng)建,缺點:實例中的每個屬性有可能會不一樣
    var Role=function(){} 
      Role.prototype.name={nickName:'昵稱'}; 
      var boy=new Role(); 
      boy.name.nickName='劉曉兵'; 
      console.log(boy.name.nickName);//劉曉兵 
      var girl=new Role(); 
      girl.name.nickName='郝曉利'; 
      console.log(boy.name.nickName);//郝曉利,因為實例對象可以修改原型中的引用對象的值 
      console.log(girl.name.nickName);//郝曉利 
    5.混合模式:原型+構(gòu)造,可以把不讓實例修改的屬性放到構(gòu)造函數(shù)中,可以修改的放原型中
    var Role=function(){ 
        this.name={nickName:'aaa'}; 
      } 
      Role.prototype.age=30; 
      var boy=new Role(); 
      boy.name.nickName='boy'; 
      console.log(boy.name.nickName);//boy 
      var girl=new Role(); 
      girl.name.nickName='girl'; 
      console.log(boy.name.nickName);//boy,實例不會修改構(gòu)造函數(shù)中的值 
      console.log(girl.name.nickName);//girl 
    6.字面量形式
    var cat={ 
        name:'lucy', 
        age:3, 
        sex:'母'
      };//將對象轉(zhuǎn)換成字符串 
      console.log(JSON.stringify(cat));//{"name":"lucy","age":3,"sex":"母"} 
      var dog='{"name":"john","sex":"公"}'; 
      console.log(JSON.parse(dog).name);//將字符串轉(zhuǎn)為對象 
    7.拷貝模式
    function extend(tar,source){ 
        for(var i in source){ 
          tar[i]=source[i]; 
        } 
        return tar; 
      } 
      var boy={name:'醉俠客',age:20}; 
      var person=extend({},boy); 
      console.log(person.name); 
    8.第三方框架
    //先引入包 
    <script src='js/base2.js'></script> 
    //base2框架,Base.extend及constructor都是固定用法 
      var Animal=Base.extend({ 
        constructor:function(name){ 
          this.name=name; 
        }, 
        say:function(meg){ 
          console.log(this.name+":"+meg); 
        } 
      }); 
      new Animal('lily').say('fish'); 
    另一個第三方框架
    <script src='js/simplejavascriptinheritance.js'></script> 
    //simplejavascriptinheritance框架,Class.extend及init都是固定用法 
      var Person=Class.extend({ 
        init:function(name){ 
          this.name=name; 
        } 
      }); 
      var p=new Person(); 
      p.name='over'; 
      console.log(p.name); 
    以上這篇JS中多種方式創(chuàng)建對象詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考