欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript構(gòu)造函數(shù)詳解

 更新時間:2015年12月27日 09:43:36   投稿:mrr  
構(gòu)造函數(shù)就是初始化一個實例對象,對象的prototype屬性是繼承一個實例對象。本文給大家分享javascript構(gòu)造函數(shù)詳解,對js構(gòu)造函數(shù)相關(guān)知識感興趣的朋友一起學習吧

構(gòu)造函數(shù)就是初始化一個實例對象,對象的prototype屬性是繼承一個實例對象。

  構(gòu)造函數(shù)注意事項:

1.默認函數(shù)首字母大寫

2.構(gòu)造函數(shù)并沒有顯示返回任何東西。new 操作符會自動創(chuàng)建給定的類型并返回他們,當調(diào)用構(gòu)造函數(shù)時,new會自動創(chuàng)建this對象,且類型就是構(gòu)造函數(shù)類型。

3.也可以在構(gòu)造函數(shù)中顯示調(diào)用return.如果返回的值是一個對象,它會代替新創(chuàng)建的對象實例返回。如果返回的值是一個原始類型,它會被忽略,新創(chuàng)建的實例會被返回。    

 function Person( name){
        this.name =name;
      }
       var p1=new Person('John');

等同于:

   function person(name ){
        Object obj =new Object();
        obj.name =name;
         return obj;
      }
       var p1= person("John");

4.因為構(gòu)造函數(shù)也是函數(shù),所以可以直接被調(diào)用,但是它的返回值為undefine,此時構(gòu)造函數(shù)里面的this對象等于全局this對象。this.name其實就是創(chuàng)建一個全局的變量name。在嚴格模式下,當你補通過new 調(diào)用Person構(gòu)造函數(shù)會出現(xiàn)錯誤。

 

5.也可以在構(gòu)造函數(shù)中用Object.defineProperty()方法來幫助我們初始化:

  function Person( name){
        Object.defineProperty(this, "name"{
          get :function(){
             return name;
          },
           set:function (newName){
            name =newName;
          },
          enumerable :true, //可枚舉,默認為false
           configurable:true //可配置
         });
      }  
       var p1=new Person('John');

6.在構(gòu)造函數(shù)中使用原型對象      

 //比直接在構(gòu)造函數(shù)中寫的效率要高的多
       Person.prototype.sayName= function(){
         console.log(this.name);
      };

但是如果方法比較多的話,大多人會采用一種更簡潔的方法:直接使用一個對象字面形式替換原型對象,如下:      

 Person.prototype ={
        sayName :function(){
           console.log(this.name);
        },
        toString :function(){
           return "[Person "+ this.name+"]" ;
        }
      };

這種方式非常流行,因為你不用多次鍵入Person.prototype,但有一個副作用你一定要注意:

使用字面量形式改寫了原型對象改變了構(gòu)造函數(shù)的屬性,因此他指向Object而不是Person。這是因為原型對象具有一個constructor屬性,這是其他對象實例所沒有的。當一個函數(shù)被創(chuàng)建時,它的prototype屬性也被創(chuàng)建,且該原型對象的constructor屬性指向該函數(shù)。當使用對象字面量形式改寫原型對象時,其constructor屬性將被置為泛用對象Object.為了避免這一點,需要在改寫原型對象的時候手動重置constructor,如下:

 Person.prototype ={
        constructor :Person,
        
        sayName :function(){
           console.log(this.name);
        },        
        toString :function(){
           return "[Person "+ this.name+"]" ;
        }
      };

再次測試:

p1.constructor===Person

true 

p1.constructor===Object

false

p1 instanceof Person

true

相關(guān)文章

  • Javascript UrlDecode函數(shù)代碼

    Javascript UrlDecode函數(shù)代碼

    將Url進行編碼,前臺JS需要使用這段內(nèi)容,這時候就需要解碼了
    2010-01-01
  • 原生JS 購物車及購物頁面的cookie使用方法

    原生JS 購物車及購物頁面的cookie使用方法

    下面小編就為大家?guī)硪黄鶭S 購物車及購物頁面的cookie使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 基于構(gòu)造函數(shù)的五種繼承方法小結(jié)

    基于構(gòu)造函數(shù)的五種繼承方法小結(jié)

    下面小編就為大家?guī)硪黄跇?gòu)造函數(shù)的五種繼承方法小結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • wx-charts 微信小程序圖表插件的具體使用

    wx-charts 微信小程序圖表插件的具體使用

    這篇文章主要介紹了wx-charts 微信小程序圖表插件的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • js控制div彈出層實現(xiàn)方法

    js控制div彈出層實現(xiàn)方法

    這篇文章主要介紹了js控制div彈出層實現(xiàn)方法,可實現(xiàn)點擊鏈接彈出div浮動層,且背景色變暗的效果,是一款非常實用的特效源碼,需要的朋友可以參考下
    2015-05-05
  • js之encodeURI、encodeURIComponent、decodeURI、decodeURIComponent

    js之encodeURI、encodeURIComponent、decodeURI、decodeURIComponent

    這篇文章主要介紹了js之encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • js觸發(fā)select onchange事件的小技巧

    js觸發(fā)select onchange事件的小技巧

    select 或text的onchange事件需要手動改變select或text的值才能觸發(fā),下面有個不錯的方法可以通過js觸發(fā)select onchange事件
    2014-08-08
  • 基于vue實現(xiàn)可搜索下拉框定制組件

    基于vue實現(xiàn)可搜索下拉框定制組件

    這篇文章主要為大家詳細介紹了基于vue實現(xiàn)可搜索下拉框定制組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • JS彈性運動實現(xiàn)方法分析

    JS彈性運動實現(xiàn)方法分析

    這篇文章主要介紹了JS彈性運動實現(xiàn)方法,結(jié)合實例形式分析了JS實現(xiàn)彈性運動的原理、相關(guān)技術(shù)細節(jié)與實現(xiàn)技巧,需要的朋友可以參考下
    2016-12-12
  • JavaScript實現(xiàn)顯示函數(shù)調(diào)用堆棧的方法

    JavaScript實現(xiàn)顯示函數(shù)調(diào)用堆棧的方法

    這篇文章主要介紹了JavaScript實現(xiàn)顯示函數(shù)調(diào)用堆棧的方法,實例分析了JavaScript顯示函數(shù)調(diào)用堆棧的具體作用與使用方法,需要的朋友可以參考下
    2016-04-04

最新評論