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

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

在 JavaScript 的對象方法中使用“this”

在 JavaScript 的對象方法中使用“this”

慕哥6287543 2022-07-15 09:31:20
我正在學習 JavaScript,為了提高我對語言的了解,我一直在嘗試了解這個待辦事項列表應用程序的工作原理。源代碼可在此處獲得??偟膩碚f,我覺得我對代碼的理解相當好。只有一件事困擾著我:在第 43 行,在“App”對象的“init”方法中,發(fā)生了以下情況:this.todos = util.store('todos-jquery');為了給你上下文,這里是“App”對象和“init”方法的開始:var App = {    init: function () {        this.todos = util.store('todos-jquery');    // <= this line        this.todoTemplate = Handlebars.compile($('#todo-template').html());        this.footerTemplate = Handlebars.compile($('#footer-template').html());        this.bindEvents();        ...    },    ...}我不明白的是,你為什么要通過在“init”方法中使用“this.todos”來定義“todos”,而不是像我下面那樣將它直接放入“App”對象中:var App = {    todos: util.store('todos-jquery'),  // <= this line    init: function () {        this.todoTemplate = Handlebars.compile($('#todo-template').html());        this.footerTemplate = Handlebars.compile($('#footer-template').html());        this.bindEvents();        ...    }...}我一直在閱讀 MDN 網(wǎng)絡文檔和其他文章(例如這篇文章)中的“this”關鍵字,試圖自己回答這個問題,但不知何故,我覺得沒有一個例子真正符合我上面描述的情況。所以我得到了源代碼并嘗試查看在進行上述更改后應用程序是否仍然有效。它確實如此。我現(xiàn)在假設這兩種方法是等效的:使用一種方法而不是另一種方法有什么好處嗎?還是僅取決于每個開發(fā)人員的編程風格?
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

一般來說,當你有:


var X = {

  y: z(),

  init: function() {

  }

};

這應該等同于:


var X = {

  init: function() {

    this.y = z();

  }

}

前提是您致電X.init()并確保在此z()之前致電沒有問題。最終結果是X.y填充了 的返回值z()。


第二種方法,其中一切都在init(),讓您更好地控制順序,從一致性和簡單性的角度來看可能更可取。在這種特殊情況下,它似乎是任意的。


在現(xiàn)代 JavaScript 中,你真的應該擁有:


class X {

  constructor() {

  }


  y = z();

}

然后你可以在哪里let x = new X()打電話x.y()。


查看完整回答
反對 回復 2022-07-15
  • 1 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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