第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

設(shè)置函數(shù)構(gòu)造函數(shù)原型(示例中)

設(shè)置函數(shù)構(gòu)造函數(shù)原型(示例中)

Smart貓小萌 2023-08-18 17:06:27
我試圖理解“JavaScript:理解奇怪的部分”課程中的一個例子。有一行代碼Greeter.init.prototype = Greeter.prototype;用于使函數(shù)構(gòu)造函數(shù)Greeter.prototype創(chuàng)建的所有對象成為原型Greeter.init,因此我們可以在Greeter.prototype.但我不明白為什么不直接在Greeter.init.prototype. 效果是一樣的。該行Greeter.init.prototype = Greeter.prototype;看起來像是多余的代碼。原始方法的優(yōu)點是什么?原始代碼:(function(global, $) {      var Greetr = function(firstName, lastName, language) {      return new Greetr.init(firstName, lastName, language);     }  Greetr.prototype = {    fullName: function() {      return this.firstName + ' ' + this.lastName;    }  };  Greetr.init = function(firstName, lastName, language) {          var self = this;    self.firstName = firstName || '';    self.lastName = lastName || '';    self.language = language || 'en';         }  Greetr.init.prototype = Greetr.prototype;  global.Greetr = global.G$ = Greetr;    }(window, jQuery));var g = G$('John', 'Doe');console.log(g);console.log(g.fullName());<html>    <head>            </head>    <body>        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>    </body></html>簡化代碼:(function(global, $) {      var Greetr = function(firstName, lastName, language) {      return new Greetr.init(firstName, lastName, language);     }  Greetr.init = function(firstName, lastName, language) {          var self = this;    self.firstName = firstName || '';    self.lastName = lastName || '';    self.language = language || 'en';         }  Greetr.init.prototype = {    fullName: function() {      return this.firstName + ' ' + this.lastName;    }  };  global.Greetr = global.G$ = Greetr;    }(window, jQuery));var g = G$('John', 'Doe');console.log(g);console.log(g.fullName());<html>    <head>            </head>    <body>        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>    </body></html>
查看完整描述

1 回答

?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗 獲得超9個贊

由于Greetr構(gòu)造函數(shù)調(diào)用Greetr.init構(gòu)造函數(shù),并通過顯式返回對象來覆蓋其返回值,因此它們之間沒有區(qū)別。

這兩段代碼創(chuàng)建完全相同的對象結(jié)構(gòu)并以相同的方式工作,但有一點不同:第二段代碼保持Greetr.prototype其初始狀態(tài)。

然而,最有可能的是,原始代碼對同一個對象進(jìn)行了創(chuàng)建Greetr.prototypeGreetr.init.prototype因為這樣就可以在不輸入 的情況下訪問和/或擴(kuò)展它.init,這更具語義性:您打算更改由 所創(chuàng)建的對象的原型Greetr,其原型通常是Greetr.prototype。另外,在第一個代碼中,instanceof將把由Greetr和創(chuàng)建的對象視為Greetr.init的實例Greetr。所以:

(function(global, $) {

    

  var Greetr = function(firstName, lastName, language) {

      return new Greetr.init(firstName, lastName, language);   

  }


  Greetr.prototype = {

    fullName: function() {

      return this.firstName + ' ' + this.lastName;

    }

  };


  Greetr.init = function(firstName, lastName, language) {      

    var self = this;

    self.firstName = firstName || '';

    self.lastName = lastName || '';

    self.language = language || 'en';       

  }


  Greetr.init.prototype = Greetr.prototype;


  global.Greetr = global.G$ = Greetr;

    

}(window, jQuery));



var g = G$('John', 'Doe');

console.log(g instanceof G$);

<html>

    <head>

        

    </head>

    <body>

        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

    </body>

</html>


(function(global, $) {

    

  var Greetr = function(firstName, lastName, language) {

      return new Greetr.init(firstName, lastName, language);   

  }


  Greetr.init = function(firstName, lastName, language) {      

    var self = this;

    self.firstName = firstName || '';

    self.lastName = lastName || '';

    self.language = language || 'en';       

  }


  Greetr.init.prototype = {

    fullName: function() {

      return this.firstName + ' ' + this.lastName;

    }

  };


  global.Greetr = global.G$ = Greetr;

    

}(window, jQuery));



var g = G$('John', 'Doe');

console.log(g instanceof G$);

<html>

    <head>

        

    </head>

    <body>

        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

    </body>

</html>


查看完整回答
反對 回復(fù) 2023-08-18
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號