03 js發布訂閱模式代碼(js監聽事件有什么用js監聽事件有什么用處)

时间:2024-05-16 16:36:12 编辑: 来源:

什么是事件流:事件流描述的是從頁面中接收事件的順序,DOM2級事件流包括下面幾個階段。

addEventListener : addEventListener 是DOM2 級事件新增的指定事件處理程序的操作,這個方法接收3個參數:要處理的事件名、作為事件處理程序的函數和一個布爾值。最后這個布爾值參數如果是true,表示在捕獲階段調用事件處理程序;如果是false,表示在冒泡階段調用事件處理程序。

IE只支持事件冒泡 。

獲取一個對象的原型,在chrome中可以通過__proto__的形式,或者在ES6中可以通過Object.getPrototypeOf的形式。

那么Function.proto是什么么?也就是說Function由什么對象繼承而來,我們來做如下判別。

我們發現Function的原型也是Function。

我們用圖可以來明確這個關系:

這里來舉個栗子,以 Object 為例,我們常用的 Object 便是一個構造函數,因此我們可以通過它構建實例。

則此時, 實例為instance , 構造函數為Object ,我們知道,構造函數擁有一個 prototype 的屬性指向原型,因此原型為:

這里我們可以來看出三者的關系:

在 JS 中,繼承通常指的便是 原型鏈繼承 ,也就是通過指定原型,并可以通過原型鏈繼承原型上的屬性或者方法。

在函數式編程中,函數是一等公民。那么函數柯里化是怎樣的呢?

函數柯里化指的是將能夠接收多個參數的函數轉化為接收單一參數的函數,并且返回接收余下參數且返回結果的新函數的技術。

函數柯里化的主要作用和特點就是參數復用、提前返回和延遲執行。

在一個函數中,首先填充幾個參數,然后再返回一個新的函數的技術,稱為函數的柯里化。通常可用于在不侵入函數的前提下,為函數 預置通用參數 ,供多次重復調用。

call 和 apply 都是為了解決改變 this 的指向。作用都是相同的,只是傳參的方式不同。

除了第一個參數外, call 可以接收一個參數列表, apply 只接受一個參數數組。

bind 和其他兩個方法作用也是一致的,只是該方法會返回一個函數。并且我們可以通過 bind 實現柯里化。

如何實現一個 bind 函數

對于實現以下幾個函數,可以從幾個方面思考

如何實現一個call函數

如何實現一個apply函數

箭頭函數其實是沒有 this 的,這個函數中的 this 只取決于他外面的第一個不是箭頭函數的函數的 this 。在這個例子中,因為調用 a 符合前面代碼中的第一個情況,所以 this 是 window 。并且 this 一旦綁定了上下文,就不會被任何代碼改變。

在函數中,我們首先使用 var 關鍵字聲明了 name 變量。這意味著變量在創建階段會被提升( JavaScript 會在創建變量創建階段為其分配內存空間),默認值為 undefined ,直到我們實際執行到使用該變量的行。我們還沒有為 name 變量賦值,所以它仍然保持 undefined 的值。

使用 let 關鍵字(和 買粉絲nst )聲明的變量也會存在變量提升,但與 var 不同,初始化沒有被提升。在我們聲明(初始化)它們之前,它們是不可訪問的。這被稱為“暫時死區”。當我們在聲明變量之前嘗試訪問變量時, JavaScript 會拋出一個 ReferenceError 。

關于 let 的是否存在變量提升,我們何以用下面的例子來驗證:

let 變量如果不存在變量提升, 買粉絲nsole.log(name) 就會輸出 ConardLi ,結果卻拋出了 ReferenceError ,那么這很好的說明了, let 也存在變量提升,但是它存在一個“暫時死區”,在變量未初始化或賦值前不允許訪問。

變量的賦值可以分為三個階段:

關于 let 、 var 和 function :

依次輸出:undefined -> 10 -> 20

答案: D

買粉絲lorChange 方法是靜態的。靜態方法僅在創建它們的構造函數中存在,并且不能傳遞給任何子級。由于 freddie 是一個子級對象,函數不會傳遞,所以在 freddie 實例上不存在 freddie 方法:拋出 TypeError 。

1.使用第一次push,obj對象的push方法設置 obj[2]=1;obj.length+=1 2.使用第二次push,obj對象的push方法設置 obj[3]=2;obj.length+=1 3.使用買粉絲nsole.log輸出的時候,因為obj具有 length 屬性和 splice 方法,故將其作為數組進行打印 4.打印時因為數組未設置下標為 0 1 處的值,故打印為empty,主動 obj[0] 獲取為 undefined

undefined { n:2}

首先,a和b同時引用了{ n:2}對象,接著執行到a.x = a = { n:2}語句,盡管賦值是從右到左的沒錯,但是.的優先級比=要高,所以這里首先執行a.x,相當于為a(或者b)所指向的{ n:1}對象新增了一個屬性x,即此時對象將變為{ n:1;x:undefined}。之后按正常情況,從右到左進行賦值,此時執行a ={ n:2}的時候,a的引用改變,指向了新對象{ n:2},而b依然指向的是舊對象。之后執行a.x = { n:2}的時候,并不會重新解析一遍a,而是沿用最初解析a.x時候的a,也即舊對象,故此時舊對象的x的值為{ n:2},舊對象為 { n:1;x:{ n:2}},它被b引用著。后面輸出a.x的時候,又要解析a了,此時的a是指向新對象的a,而這個新對象是沒有x屬性的,故訪問時輸出undefined;而訪問b.x的時候,將輸出舊對象的x的值,即{ n:2}。

在比較相等性,原始類型通過它們的值進行比較,而對象通過它們的引用進行比較。 JavaScript 檢查對象是否具有對內存中相同位置的引用。

我們作為參數傳遞的對象和我們用于檢查相等性的對象在內存中位于不同位置,所以它們的引用是不同的。

這就是為什么 { age: 18 } === { age: 18 } 和 { age: 18 } == { age: 18 } 返回 false 的原因。

所有對象鍵(不包括 Symbols )都會被存儲為字符串,即使你沒有給定字符串類型的鍵。這就是為什么 obj.hasOwnProperty('1') 也返回 true 。

上面的說法不適用于 Set 。在我們的 Set 中沒有 “1” : set.has('1') 返回 false 。它有數字類型 1 , set.has(1) 返回 true 。

這題考察的是對象的鍵名的轉換。

catch 塊接收參數 x 。當我們傳遞參數時,這與變量的 x 不同。這個變量 x 是屬于 catch 作用域的。

之后,我們將這個塊級作用域的變量設置為 1 ,并設置變量 y 的值。現在,我們打印塊級作用域的變量 x ,它等于 1 。

在 catch 塊之外, x 仍然是 undefined ,而 y 是 2 。當我們想在 catch 塊之外的 買粉絲nsole.log(x) 時,它返回 undefined ,而 y 返回 2 。

ansyseplot在哪

一、學會使用Help

 

1、如果你的ANSYS HELP不能打開,或者打開后內容為空,請單獨下載并安裝ANSYS HELP,安裝路徑選擇和ANSYS的安裝路徑一致。ANSYS19.0;ANSYS19.1;ANSYS19.2 HELP文件下載地址:

鏈接:買粉絲s://pan..買粉絲/s/1kR2WVhQtlKXG7ykLZQHrqA

提取碼:help

2、使用HELP強烈建議要了解ANSYS 經典界面的操作,這樣可以從經典界面的操作中定位到HELP,進而找到相關的命令幫助。如創建模型的一個關鍵點,在ANSYS經典界面中的操作如下

在這里插入圖片描述

點擊對話框中的HELP按鈕,即可自動定位到該功能的命令幫助

在這里插入圖片描述

由上面的HELP可知,創建關鍵點的命令是K

3、APDL的相關命令,既可以通過搜索直接搜索,也可以在Mechanical APDL—> Command Reference目下根據命令的首字母進行查找

在這里插入圖片描述

4、以*get命令為例(APDL的命令不區分大小寫),介紹如何查看APDL的HELP幫助

首先,查找 get命令,可以直接通過首字母查找,也可以通過搜索進行查找

在這里插入圖片描述

在這里插入圖片描述

從幫助文檔中我們可以看到get命令是做什么的(獲取某些值并存儲在參數中),它有哪些具體參數,以及各個參數的意義。

向下翻,找到前處理需要獲得值的模塊

在這里插入圖片描述

 

比如我們想要獲得前處理階段,關鍵點的相關值,我們可以點擊Entity=KP,定位到相關幫助

在這里插入圖片描述

在這里插入圖片描述

 

如Item1=LOC,IT1NUM=X,就可以獲得關鍵點N的X坐標值。具體命令如下

 

*get,kp,n,lo

搜索关键词: