<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                我們在生活中經常聽到對象兩個詞,那么對象到底是個 什么玩意啦,我們來查一查維基百科; ![](https://box.kancloud.cn/2016-05-06_572c45a2a9087.jpg) 百度給出的答案太玄乎了,我們這里只討論編程語言的對象,準確的說是JavaScript的對象; **理解對象** 引用類型的值(對象)是引用類型的一個實例。在Js中,引用類型是一種數據結構,用于將數據和功能組織在一起。它有時被人稱之為類,但這種稱呼并不妥當。盡管JS從技術上講是一門面向對象的語言,但它不具備傳統的面向對象語言所支持的類和接口等基本結構。引用類型有時候也被稱為對象定義,因為它們描述的是一類對象所具有的屬性和方法。 在Java語言里面,我們可以把類理解稱為是與現實世界中抽象出來的一種事物,比如人,而對象可以理解稱為是市類的一個具體載體,與現實生活中存在或者不存在的具體事物相互對應,比如男人,女人,人妖,人馬,妖人。在這里類與對象都是抽象的,只要對象比類的范圍更細,更具體就可以了,比如對象時一個男人,我們說這個類就可以叫做張三,李四等; 如前所述,對象是某個特定引用類型的實例。新對象是使用new操作符后跟一個構造函數來創建的。構造函數本身就是一個函數。 **搞對象前,先創建一個對象:** **1.對象字面量。** ~~~ var person={ name:'張三', age:22, address:'天堂', showPresent:function(){ alert(this.name+" "+this.age+" "+this.address); } }; person.showPresent(); //調用 ~~~ **2.函數create創建(有的瀏覽器不支持少用為好)** Object.create(proto [, propertiesObject ]) 是E5中提出的一種新的對象創建方式,第一個參數是要繼承的原型,如果不是一個子函數,可以傳一個null,第二個參數是對象的屬性描述符,這個參數是可選的 **3.構造函數模式** ~~~ function person(name,age,address){ this.name = name; this.age = age; this.address = address; this.showPresent = function(){ alert(this.name+":"+this.age+":"+this.address); } } var newPerson =new person('張三',22,'地獄'); alert(newPerson.showPresent()); ~~~ 構造函數的缺點:由于this指針在對象實例的時候發生改變指向新的實例。這時新實例的方法也要重新創建,如果n個實例就要n次重建相同的方法。于是讓我們來揭開原型模式吧 **4.原型模式** ~~~ function person(){}; person.prototype.name='張三'; person.prototype.age=18; person.prototype.address='湖北'; person.prototype.showPresent=function(){ alert(this.name+":"+this.age+":"+this.address); } var newperson=new person(); newperson.showPresent(); ~~~ 理解原型: 既然有了對象,我們就需要去了解一下對象是怎么產生的,我們得去拜訪一下老丈人和丈母娘看看他們是怎么產生這個對象的; ![](https://box.kancloud.cn/2016-05-06_572c45a2bff1c.jpg) 深度理解原型模型很重要, 首先,每個函數都有一個prototype(原型)屬性,這個指針指向的就是person.prototype對象。而這個原型對象在默認的時候有一個屬性constructor,指向person,這個屬性可讀可寫。而當我們在實例化一個對象的時候,實例newperson除了具有構造函數定義的屬性和方法外(注意,只是構造函數中的),還有一個指向構造函數的原型的指針,ECMAScript管他叫[[prototype]],這樣實例化對象的時候,原型對象的方法并沒有在某個具體的實例中,因為原型沒有被實例。 所以這種模式定義的對象,在調用方法的時候過程:調用nnewperson.showPresent();.showPresent();先看實例中有沒有,有調之,無追蹤到原型,有調之,無出錯,調用失敗。 propertiesObject 參數的詳細解釋:(默認都為false) **數據屬性** - writable:是否可任意寫 - configurable:是否能夠刪除,是否能夠被修改 - enumerable:是否能用 for in 枚舉 - value:值 **訪問屬性:** - get(): 訪問 - set(): 設置 屬性操作:一般情況下操作屬性直接使用obj.name=value;這種方式直接操作就好了,但是在遍歷循環的時候我們要使用 obj[name]=value;這種操作才能得到我們想要的結果,當然也可以使用get和set方法;刪除的屬性值的話我們可以使用delete obj.name;如果是檢測屬性的話我們可以直接 * in,也可以使用hasOwnproperty;他和in 的最大區別在于in 會去遍歷該對象的所有屬性,包括默認的,而hasOwnproperty只遍歷該對象本身創建的;propertyIsEnumerable是判斷該屬性是否可以被枚舉的; ~~~ <script type="text/javascript"> var cat=new Object(); cat.legs=4; cat.name='奔馳'; 'legs' in cat; //true 'aaa' in cat; //false 'toString' in cat; //true cat.hasOwnProperty('legs'); //true cat.hasOwnProperty('toString'); //fasle cat.propertyIsEnumerable('legs'); //true cat.propertyIsEnumerable('toString'); //fasle </script> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看