>>好吧，那麼今天， 我將要討論
關於JavaScript和它是如何 不同於其他語言
那你可能會對 以前喜歡PHP的。
因此，在上一講 週一，我們談了一下
關於什麼是類似的，有什麼 JavaScript之間熟悉
和PHP或Python或Ruby 或C或其他語言
那你已經 熟悉。
但實際上它的JavaScript 有一個非常獨特的取材
在對象模型中，使 它像是完全不同的
比大多數語言中 你要去處理。
因此函數是一種
的懷才不遇 概念在JavaScript中。
他們的方法比更強大 他們在其他語言
因為他們可以 在 - 的原因之一，
他們能夠成為 設置為值。
所以，在這裡我們有 變種x等於功能
這是一個一流的 可以傳遞價值
圍繞作為參數。
所以，你不必 聲明函數x
並且只使用X IN的範圍。
您可以通過x的值 各地的任何地方，你知道，
作為自變量進入 另一個函數
在這裡您可以導出模塊 正如大衛在節點提及。
所以接下來的問題是
該函數是一個 對象在JavaScript中。
所以，你可以實際設置 屬性值
在功能和公正對待 它喜歡它的一個對象。
所以，當您使用 jQuery的，你知道，那美元
然後你通過 一個選擇了進去
並調用它的函數。
但你也 曾元點的AJAX。
而這確實有點不 有道理，如果你認為
只是作為一個函數的 有些東西你可以調用
或致電。
但JavaScript允許你 在功能設置屬性
為靜態屬性 與僅售X點someProp
正如我在那裡。
第二點，我們是 要進入更多一點
在深度的事實是 函數可以被視為
作為類在JavaScript中。
因此，有概念 這種新的運營商
這將創建一個新的實例 以及一個排序函數
象類狀體 這與它一起
我們打算去 到了一點多，
這就是所謂的原型。
而且它是什麼品牌 JavaScript的非常獨特的比較
其他語言 這是基於類的，
JavaScript是基於原型。
然後就在 底部有，
函數可以直接調用 說白了，因為我們已經習慣了。
所以，這不是什麼新鮮事。
另一件事，是獨特的是
該數組實際上是 對象。
他們不喜歡他們是在PHP
您只需創建 新的陣列。
這實際上是一個速記 這麼說新的數組。
和數組實際上是一個 子類的一個對象。
所以這件事情 不同的，我會去
入少許更 細節上。
和調試功能
用JavaScript是真的 無可匹敵的，據我見過。
這是一個屏幕截圖 Chrome的督察
我們要去 使用為休息
今天的演示。
而要得到這個，你只是 轉到文件的開發者工具
開放的鍍鉻督察 或者你可以右鍵點擊
然後單擊顯示元件I 認為這是在HTML頁面
或者我認為這是命令 選項J打開這件事。
但我們會進入這個和你 實際上可以設置斷點
因為你通過運行 JavaScript代碼和排序
的評價是什麼地方 變量是，什麼樣的價值
這是和它使得 這樣更容易調試代碼。
和鴕鳥政策 - 這不是 受限於瀏覽器端代碼
但你實際上可以 運行一個實例
該鉻督察 為您服務端代碼
這實在是整齊的，因為你 用線穿過線可以加強
作為一個請求進入你的 服務器，看看發生了什麼
並與變量玩 在控制台到這裡。
因此，正如我所提到的，JavaScript的 是一種基於原型的語言
這意味著存在一組 哪是那種默認值
隱藏每個函數
在目標點 prototype屬性。
所以它的排序的散列 只是不同的默認值
當你調用一個 使用new關鍵字的功能，
那些被設置 默認為功能
可用 在該實例。
所以這實際上是 - 對於真正有效
它是一種有效的方式 創建對象的內存明智
因為JavaScript的 運行時只需要跟踪
的對象的原型。
排序它指向
當你cretae新 實例一類。
你也可以模仿 繼承眾所周知
在基於類的語言 在那裡你必須排序
像一個這樣的延伸， 擴展了您可以模仿
在JavaScript的 通過什麼所謂的
原型鏈。
我們將看到的例子 有關。
所以，如果你的 - jQuery插件 其實他們推薦的jQuery
作者用美元點 FN添加功能
jQuery庫。
而我們究竟要 跳轉到 - 那麼，這個頁面上，
我們有美元 - 我包括jQuery的。
如果你這樣做美元 點綴在控制台
我提到把 您通過命令轉變Ĵ
或者只是去查看， 開發者，開發者工具
和去Sources選項卡。
[無聲備註]
哦，當然。所以，當我開始 在一個變量類型，
它的自動完成對我來說 什麼是可用的在那裡。
所以，我輸入了美元，我可以 見我認為Chrome瀏覽器有一些
內置美元， 美元和美元按x。
所以現在我只想 美元和我放在一個點。
然後它表明我 所有屬性
可用 在jQuery對象。
但如果我這樣做美元 點樣機，
我現在看到的所有方法 我已經習慣了使用
當我有美元，選擇 然後我鎖鏈，隨著，
你知道，添加類或追加 或模糊或任何類似的。
這些都是實際 在原型
其中引擎蓋下的jQuery 創造了自己的新實例
樣的，它隱藏所有 這些細節你。
因此，問題是我是 做回看過來
同的功能，它們 其實從你隱藏原型
而只是它的別名 以美元點FN。
所以大多數人實際上 不知道
有一個原型 引擎蓋下的佼佼者 -
你可以挖掘到和 添加額外的功能
每個jQuery的實例 如果你願意的話​​。
因此，“新”運算符是 真的很難排序
了解在第一。
當你調用一個函數 用“新”，
它是一個完全不同的 調用函數的方式
因為如果你剛剛打電話 說白了。
因此，“新”運算符創建 所謂的新實例
一個物體或一個新的 的，你能想到的實例
將對象作為一類。
並且當此情況發生時，該值 這可能是熟悉的
從jQuery的， 他們那種設置此
到任何方便 的時間。
他們通常將其設置為 你是當前的DOM節點
作為你正在經歷像 每個或類似的東西。
他們 - 這個值應該 是實例的值
您用“新”創造， 它包括一切
在原型鏈和所有 那你會找到方法
作為原型的屬性。
所以它取決於 一個函數被調用時，
什麼這個值。
它真的困惑 如果你是新來的JavaScript。
但每一個被稱為功能 有 - 有這個價值。
所以，即使你還沒有創建 事物的新實例，
這是假設 是全球性的。
或者你可以調用一個函數 使用調用方法
其中申請方法 在JavaScript中。
你可以在功能和 具體說明這應該是。
所以，你可以把它的動態， 這實在是厲害
也可以讓你做 東西可以誤導
和困惑 其他開發人員
如果他們不使用的事實。
和jQuery，我認為 使得它更加混亂
通過使它方便 並設置它
到當前DOM節點。
但簡單的規則來記 什麼的這個值是
當你正在尋找
在功能呼叫 什麼是左點的。
所以，如果你有一個對象
它的東西點 什麼是函數
那你打電話再 第一個值是什麼值
這是。
因此，這裡是一個代碼示例
在那裡我創造 字面的新對象
這僅僅是該對象 用大括號創建
而且我設置名字給Bob
然後我有一個sayName 方法這裡的 -
所以這裡面sayName 如果我做X點sayName，
這個值等於 為x因為左
點的為x。所以，如果 我把它叫做x點sayName，
它會說你好鮑勃。
然後另一個例子
在那裡我居然分配 x點sayName，該函數
給變量Y， 這正如我所提到
在你的JavaScript 可以分配功能
每當你想要的變量， 它是真正靈活的方式，
但現在當我叫Y， 它失去了x的範圍內。
所以這是現在全球或 如果你是在嚴格模式下，
我相信這是空 或不確定。
但是 - 因此，Y是不是你在做什麼 期待在這裡，如果你正在尋找
在x和你要去 打電話sayName，
你希望這個名字 應該是鮑勃。
但是，如果你把它關閉 該對象並把它稱為
本身，這是現在全球。
而這就是我一直在提 當你看到美元這個點，
你通常不會想到的 什麼是真正回事。
但是jQuery的排序有其 自己的領域特定語言
對付這一點， 它不是你使用什麼
在JavaScript中。
我指出這一點 因為它真的很重要
編寫結構良好 面向對象的代碼
在JavaScript中真的有 有很好的理解和把握
這是如何工作以及如何 對象模型作品
以及如何在新的操作符。
否則，你最終 與jQuery的意大利麵條
這裡的一切是排序 的所有的地方
只有處理DOM。
如果你能真正 編寫JavaScript
在一個更結構化的方式， 它使人們更方便
一起工作，進行排序 的分開的關注
該處理的 更新DOM和處理
與實際的邏輯和代碼。
因此，讓我們來看看一個 周圍的數個例子。
所以，我這裡有一些例子。
所以這只是一個簡單的例子 使用JavaScript對象的
並增加了一些功能 它然後創建排序
就像一個微型的應用程序。
所以這是非常簡單的實際。
它所做的唯一一件事就是 首先它會提示你的名字。
所以我會說添，然後你 可以改變你的名字給Bob。
這就是這一切 應用程序一樣。
但我想該怎麼點 出來是怎麼做的。
所以，我有這個名字發生器 對象，它有一個start方法
詢問用戶 他們的名字
只要調用這個askForName
它在這兒了 做提示
如果名字沒有被分配 然後它會要求再次
通過調用這個askForName。
然後一旦它的名稱， 它會調用這個更新的名稱。
因此，這則設置 在h1標籤的用戶名。
如果名稱不 設置，它拋出一個錯誤。
[無聲備註]
哦，當然。所以它設置 在h1標籤的用戶名
通過調用setDisplayName 其中設置HTML
在JS名稱和容器 我在前面加上我所有的HTML
與JS的選擇，只是因為 這是一個很好的習慣
成只是為了讓 何嘗不是如此混亂
當您使用 像ID或類選擇器
兩個風格和邏輯
在JavaScript 前端應用程序。
因為如果你有不同的 人工作組
在代碼庫和你 有選擇有
設計者決定 改變，因為it's -
看起來不是很大，所以他們希望 放在一個新的類，並採取
出你和你依靠 它為JavaScript的目的，
那麼你的代碼打破。
這是很好的前綴和排序
像空間的大致 JavaScript相關的類
或屬性 JS的前綴。
所以這是相當 簡單，你可以看到
在所有這些情況下，我 調用返回這個底。
所以這是一個很好的 習慣進入，
給你一個它 有效的返回值。
在askForName我不 因為這是有道理的
你會得到的名字後面。
但是，允許 你做那麼
如果返回此更新 命名，它的返回值
setDisplayName的是 返回這個值。
並允許您進行排序 鏈為你所用的
在jQuery的通過返回 這每一次的值。
這指的是 當前對象
所以你可以調用這個點 askForName點setDisplayName
它會保持 這種價值和讓你
有一個很好的鏈存在。
然後在 - 所以在 這第二個例子。
[暫停]
好的。
確定。因此，讓我們繼續前進 並打開控制台
然後轉到我的資源選項卡。
我們會彈出這個實際出發。
所以在Chrome開發 我所提到的工具，
還有這片 在右側，而一 -
你可以看到這個站牌 雖然在默認情況下，它是黑色的。
但是，當您將鼠標放在它，它 說：“你上不例外暫停。
點擊暫停 所有的異常。“
而當你點擊它 再次，它會變成藍色。
現在是隨時 有拋出一個錯誤
在你的JavaScript代碼，它會 停止在該點，並允許您
評估是怎麼回事。
所以 - 而這真是一個有用的 概念是要指出。
然後，如果你點擊 再次，它會變成紫色
這就是通常 我保持它。
它只是打破了代碼 當有異常
還沒有被抓到。
所以很多在jQuery的時間 例如，他們會盡力捕捉
以測試是否在瀏覽器 具有某種能力
並從那裡繼續。
這是唯一的時 有一個錯誤
這一直沒有 陷入了一個嘗試捕捉。
所以讓我們嘗試並提交 一個名稱為空白。
這樣我就可以看到， 代碼現在停止
在updateName方法 我可以將鼠標放在名字
看看它是空的空白。
在那裡，它是等於空白。
所以，如果不命名拋出一個新的 錯誤，現在我可以退一步
通過該功能 柱說，“好吧，
哪兒來的，“和 看看客戶端的值是。
因此它具有askForName方法，
setDisplayName開始 和updateName。
而這僅僅是一個非常有用的 這樣你可以看到有所有
可用的變量 在該範圍內，以及
作為閉合變量， 所以說是封閉的東西
在由該函數。
所以我可以看到 - 什麼客戶端的值是
什麼這個值。
所以這個'因為我們是 在jQuery是平等的
到當前的DOM元素。
但它確實很有用 用於調試的代碼
要打破這樣的錯誤。
的另一個特點 Chrome瀏覽器是督察
在任何時候，你可以 點擊不同的線
在該行，它會 打破的地方
您已設置斷點 它們被稱為。
所以，如果我點擊時， 行會變成藍色。
因此，讓我繼續 執行這裡，好了，這打破了。
現在讓我們設置名稱 愛麗絲和點擊提交。
所以，現在我可以看到，即使 才到了點
更新的一切，它現在 停在這裡，所以我可以看到
我的這個名字是愛麗絲 然後我就可以繼續 -
讓我重新加載頁面。
好了，所以現在它的 在開始再次啟動，
它已經停止在此 行，我可以看到
該名稱是當前 未定義。
askForName是哪個函數 是，所以這也是非常有用
如果你具備的功能是 從不同的文件來
在或不同的地方 代碼，你可以看到它在哪裡，
然後跳轉到的是， 它會高亮顯示。
那麼好拿到的習慣 使用調試工具
這不只是 安慰點日誌。
好了，讓我們來 看第二個例子
這使得更多的使用 原型，因為我已​​經提到。
所以在這個例子中，
我們創建了一個新的 函數調用CS
這就是資本 所以約定標準
在JavaScript是，如果一個 函數應該被用來
作為一個構造函數，而不是
只是一個正常的 功能，你利用它。
所以，我有資本CS和本 採用可變courseId
和courseTitle這 我設置這個courseId，
這courseTitle 在構造函數中。
然後我還設置學生 和講座為空數組。
讓你的原因 -
OK，這樣的原型 性能進行了再定義
這兒有 - 所以模板 只是一個簡單的下劃線
模板，下劃線的模板 作為一種方式，你可以 -
類似於模板 大衛所提到的
在服務器上，你可以 只寫一個腳本標記
這是不是一個JavaScript 腳本，但文本的HTML
而我在做什麼 用jQuery是 -
它並不把這些 開放，是啊，我們走吧。
使用jQuery，它得到了 該模板的HTML值
然後通過運行它 強調實用工具庫
模板引擎。
這樣的文檔 因為這是到這裡
該實用程序模板下
但基本上你可以閱讀 多一點點吧。
但評估該字符串 並把它變成一個函數
然後我們可以通過數據 為它動態地調用。
接下來的兩個方法我有 是addStudent和addLecture。
這些只是將它們添加到 我已經設置的內部陣列
在構造函數和 那麼render方法。
所以，讓我們創建新的 CS的實例調用164
其中有本課程 號164和標題。
然後CS50有 CS50和介紹到CS1
然後添加一些 學生講課
然後調用CS50渲染。
如果我運行的代碼，所以 我在做與評估和演示。
你從來沒有真正想用 的評估，但我只是排序
採取一切 JavaScript代碼是在這裡
和執行它的飛行。
它呈現到這個 這些模板的新實例
其中有CS類的 的屬性，所以我們已經走了
通過和做過addLecture 和addStudent每個。
正如我提到的 因為我回到這一點，
我其實可以把這些 addLecture和addStudent電話
它會很好的工作。
在JavaScript中的其他功能 這是更有益的
在服務器端，其中 你真的在任何給定時間
如果你的應用程序獲得 更大的不知道你在哪裡
並且它很難設置 這些個別的斷點
我在提到 Chrome的檢查是
使用調試器關鍵字。
所以它只是D-E-B-U-G-G-E-R。
而當你把一個調試器 在你的代碼關鍵字
和你有 - 我們走吧，兩名GS。
當你把調試器 在你的代碼關鍵字
並且你正在運行一個調試器
如Chrome瀏覽器 這裡督察
或在服務器側鉻 督察，它告訴JavaScript的
停止執行在該行 代碼，然後它可以讓你
步驟通過休息 代碼的執行。
所以，如果我點擊運行代碼 在這裡，它現在停止
在這個調試器行，我可以 看到好了，這裡的CS50的價值
這是一個過程了 標題，當然身份證，
它有沒有講座， 沒有學生。
然後我就可以通過一步 整個addLecture，
我可以看到它的推 在這些講座，
鼠標放在那，“Hello World”的。
其實我可以在 控制台這樣做，所以這是設置
當前對象 你是英寸
本次演講是“世界你好”。
並保持步進 通過像我想要的。
如果我不想步驟
成一個函數調用“原因 我知道那是怎麼回事
做進入addLecture， 有這個按鈕就在這裡
它說“步驟，在未來 函數調用，“所以我可以去
給點了，我也許 想知道的東西。
比如像164渲染。
所以在這一點上，它是 將要被渲染。
我可以看到這個模板 是編譯後的模板。
我可以在這一點上，我看到 應該有兩個學生
和兩個講座。
然後有原型 鏈，我指的是。
所以默認的自帶 伴隨著只是一個對象
在JavaScript中一般，
它帶有兩個字符串 構造函數的值。
然後那些 我對我自己添加
與addLecture，addStudent 然後將屬性
所特有的這 類的實例
因為它被調用 使用new關鍵字。
因此，讓我們做一 更多這方面的例子
然後，我們將逐步在一定 更有趣的事情
在服務器端。
因此，讓我們繼續前進，開 最後一個例子是 -
讓我們來看看，這裡是代碼？
我不知道這個去了。
好了，好了，我們可以直接跳過 在這段代碼然後實際 -
哦，等一下，我想我錯過了 樣式表的代碼。
好了，讓我們 這個有點大。
在這個例子中，我展示 更多關於設置有點
了原型鏈，
所以建立繼承 使用JavaScript。
所以在這種情況下，我們也 目錄這是怎麼回事
到大概維持 多個課程。
所以一個目錄有 一個addCourse方法。
因此，它會檢查是否課程 這是在傳遞是一個實例
當然作為調用 使用new關鍵字。
所以，如果你試圖發送
在不同的東西， 它會衝你大吼大叫。
渲染方法，將 呈現每個課程
通過編譯它的模板下面。
我們有過程 其中接入
在這種情況下，對基類 個別部門課程。
和，而不是設置各
課程圓點 原型點法
或者使用擴展屬性 助手在下​​劃線庫
排序通話的擴展 這個原型與所有
這些性質，這是 有用的，比較容易閱讀。
然後到這裡幹什麼 什麼叫做設置
了原型鏈。
所以，這其實是一個小 棘手的人們在第一個
甚至仍然在做這件事 一段時間，它有點硬
來包裝你的頭部周圍。
但不要讓這種嚇唬你。
所以我設置了一個新的 -
一類全新 反對在這裡，CS。
並在構造函數中，
我說，當然 應用此參數。
這樣的參數是一個特殊的 值我想你可以稱它
在JavaScript中， 關鍵字裡面有所有
在一切的的 沿著傳遞參數是
該功能可 用參數來調用，
與參數的關鍵字。
所以當我打電話 用點當然適用，
這是當前上下文 與CS被調用。
所以，當我與新來調用它 這是一個 - 這是CS的值。
而且我說把這種 當然，這裡的方法了。
哦，對不起 - 調用這個 當然，方法就在這裡
但是設置這個值 是什麼值
這是在這裡。
因此，應用關鍵字允許 你要排序的改變狀態
這其中是多麼的jQuery 被允許進行排序開關的
這項對你作為 你正在經歷
並作出DOM元素 而不是jQuery對象。
所以，現在我要設置 臨時函數
這將搶 原型課程。
和排序的設置 其原型
然後設置原型 在CS函數對象
到一個新的實例。
所以基本上我 而不是說 -
如果我在這兒做點CS 原型等於新課程。
那麼這將是 調用一切
在這個構造函數，
我不會 一定要。
因此，所有我做的是 那種幾乎創造
就像一個替代函數 將有原型的課程
對排序的它， 模仿的原型 -
的課程，但沒有做 一切都在構造函數
並設置為原型。
然後，我只是 添加等部門
在這種情況下是計算機 科學為CS對象。
然後我有一個排序的 橋版這樣做的。
它並不在IE9工作。
所以這就是為什麼我想 顯示排序如何 -
這是什麼做 引擎蓋下。
但是你可以將它設置 向上以相同的方式
其中經濟學等於功能 當然，運用這些參數
然後說點經濟學原型 等於物體點CreateCourse
點的原型。
因此，它會創建一個新的對象 這僅僅是原型
該課程，然後 設置部門那裡。
所以，現在就讓我們去設置一個 調試器在這裡，點擊運行。
我們走吧。
所以，CS164，我們可以看到 原型鏈，我們已經得到了
性能這是 在構造函數中設置。
因此，這些被設定的值 然後在原型鏈
對於CS對象它有 計算機科學系設置。
然後在底層 原型鏈，
然後我們把所有的 方法和屬性
所特有的 課程對象。
然後我們有 基本對象。
因此，那種快速 例如原型鏈中。
正如你可以在這裡看到，有 是每個部門兩個值。
因此，有部 計算機科學
然後部門 我說沒有列出
作為默認值在這裡。
因此原型鏈 實際上只是一個單獨
鏈接列表。
並且，因為它試圖 找到一個屬性，
它會開始在 頂級的價值。
那麼什麼是定義 構造函數
然後排序下井 原型鏈從那裡。
所以，因為它發現，所以 -
如果在這裡，我說 CS50點處，
它會說計算機科學。
但如果我說變種 -
[暫停]
但如果我說人文 等於新課程
然後我說人文 點部，
我會看到部門中未列出 因為它去了第一 -
我可以看看原型 鏈實際上在這裡。
因此，它首先去的過程中 反對，看到沒有什麼
在原型鏈的 這個級別的部門
或為部門值，使 然後跳轉到一個新的水平，
課程和外觀 轉發那裡找到它。
因此，它只是有點像 下山從上而下
這就是排序 東西是獨一無二的
關於JavaScript是 您可以更改任何
這些值在 任何給定的時間。
因此，在構造函數中或在 該對象上的各個方法
如果我想設置這個 部門新的東西，
或者如果我什至想設定 任何這些功能的
那些已經存在
新的東西， 我可以自由地做。
所以現在我有CS50點 addLecture，看起來像這樣。
如果我想將它設置為 CS50 addLecture只是等於
空白的功能。
那麼現在我可以看到它的 只是徹底改變
而你不能夠 另做語言
在那裡你有一個更嚴格的 基於類的繼承
一切都是 排序的設置。
JavaScript是非常，非常 靈活的問候了。
好吧，讓我們跳回到 在幻燈片中。
因此，舉例來說如果你 總是喜歡一個函數
具有特定的 該值設置它。
你可以調用函數綁定點
並設置什麼值 這應該是。
你可以把它看作是 -
“我試圖想出一個 好現實世界的例子，但“
如果你想保護你的代碼
針對有人可能 用一個值調用它
這不會是這樣。
例如像AJAX 回調喜歡多餘的或錯誤。
那些通常不叫
具有良好的語義 的這個值。
和你一樣，“好吧，我總 希望這是值
課程對象 我正在與。
或者我的看法 在我的代碼工作
表示此 DOM節點，可以設置 -
你可以綁定上下文這 然後當它後來被稱為
通過jQuery和它不具有 良好的價值這一點，會堅持
什麼你與有界的。
再有就是函數調用進行 您可以指定上下文
並指定任何變量 數量的參數。
再有就是功能 運用它可以通過
在上下文和 然後一個數組
或參數對象 我提到，你看那裡。
在任何參數 您調用函數，
你可以只輸入 單詞“論點”
它會擁有所有 的論點。
它有一個“長度”的屬性
這是5月的論據是如何 實際上傳遞給該方法
因為在JavaScript 您可以排序通話
具有可變號 的論點。
它是這麼說有用 如果這有一個說法，
然後按照這個代碼路徑。
如果有兩個，則可能 要遵循另一種方式。
它可以讓你有真 動態的API為您的方法。
你能想到的 這與jQuery
就像當你有 美元點或綁定。
排序和它 不同的東西
至於你是否把一 參數或兩個或三個
或用一個函數來啟動它。
它使用的參數 屬性
和論據 長度在很多情況下，
有這樣的魔力 功能發生。
的東西，你不能這樣做 參數是只使用它
默認情況下，作為一個數組。
所以，你可以說參數 3，將其設置的東西
你可以使用 數組賦值。
您可以使用 - 很多 的下劃線方法
對於任何集合或 用於處理數組，
您可以通過在參數 它會實現
它的一個參數 對象和排序
中採取照顧你。
但是，如果你想要使用的 所傳遞的參數
通過一個函數作為數組，
您可以使用下劃線 點2的數組。
一個數 效用函數
正在建設中強調。