JavaScript&JQ 003_ 為對象添加方法和屬性

來源:互聯網
上載者:User
/* var obj=new Object();//建立一個對象 obj.name="兔子01";//給添加添加name屬性 obj.age="24";//給對象添加age屬性 obj.showName=function(){//給對象添加showName方法  alert("My Name is "+this.name); } obj.showAge=function(){//給對象添加showAge方法  alert("My Age is "+this.age);  } obj.showName();//My Name is  兔子01 obj.showAge();//My Age is 24 */ /*問題???      如果有很多個物件,如果按照上面的方法就要寫很多次了    */    /*OOP 面向對上面的進行封裝    1:工廠方式構造對象【原材料-->加工-->出廠(return)】    function Person(name,age)  {      //1、原材料      var obj=new Object();      //2、加工      obj.name=name;      obj.age=age;      obj.showName=function(){       alert(this.name);//this:當前的方法屬於誰【在函數前面有new的時候失效】      }      obj.showAge=function(){       alert(this.age);       }      //3、出廠      return obj;//如果不返回,外面調用不到obj  }  var p1=Person("zhangsan01",12);  var p2=Person("zhangsan02",13);*/  /*       p1.showName();  p1.showAge();//zhangsan01-12       p2.showName();  p2.showAge();//zhangsan02-13     alert(p1.showName==p2.showName);//false    */   /*問題???           工廠方式缺點:            1、沒有new            2、每個對象都有自己的函數,浪費資源,【n個Person就要建立n個對象】                  --因為var tuzi1=function{                               alert("tuzi");                              }                             <==>等價於                             var tuzi2=new Function("tuzi");                             //建立了2個對象,所以不相等    */  /*function Person(name,age)  {      //如果外部調用函數new的時候,系統內部自動建立對象???//var obj=new Object();            /*             function testNew()             {               alert(this);               //如果調用是:testNew();        //返回window               //如果調用是:new testNew(); //返回是object             }             testNew();             new testNew();                this.name=name;      this.age=age;      this.showName=function(){       alert(this.name);//this:當前的方法屬於誰【在函數前面有new的時候失效】      }      this.showAge=function(){       alert(this.age);       }       //如果外部調用函數new的時候,系統內部自動return      //return obj;//如果不返回,外面調用不到obj  }  */   /*     var per1=new Person('zs01','男');     var per2=new Person('zs02','女');     per1.showName();//zs01     per2.showName();//zs02     alert(per1.showName==per2.showName);//false     效率還是上面一模一樣 */  function Person(name,age)  {            this.name=name;      this.age=age;  } Person.prototype.showName=function(){  alert(this.name); }  Person.prototype.showAge=function(){  alert(this.name); } /* var p1=new Person("tuzi01",100);  var p2=new Person("tuzi02",200);  p1.showName();//tuzi01 p2.showName();//tuzi02 alert(p1.showName==p2.showName);//true */ /*   p1.showName==p2.showName-->true   我們通過原型解決了多個Person建立n個對象的資源問題   -->原型可以拓展系統對象,不會棄置站台,都是一個對象 */ /* 最後再示範原型一個例子,為string對象拓展一個去掉空格的方法,雖然IE9現在貌似已經有了trim()  */String.prototype.MyTrim=function(){ return this.replace(/^\s+|\s+$/g,'');}var str=" 無妹子不編程 ";//首尾都有一個空格alert(str.length);//8alert(str.MyTrim().length);//6-->去掉了空格 </script>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.