日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript高级day01-PM【对象、函数、回调函数、IIFE、this、关于语句分号问题、webstorm代码模板、复习】

發布時間:2024/9/30 javascript 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript高级day01-PM【对象、函数、回调函数、IIFE、this、关于语句分号问题、webstorm代码模板、复习】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

筆記、視頻、源碼:JavaScript(基礎、高級)筆記匯總表【尚硅谷JavaScript全套教程完整版】

目? ?錄

P7?07.尚硅谷_JS高級_對象?23:30

1. 什么是對象?

2. 為什么要用對象?

3. 對象的組成

4. 如何訪問對象內部數據?

5. 什么時候必須使用['屬性名']的方式?

P8?08.尚硅谷_JS高級_函數?15:59

1. 什么是函數?

2. 為什么要用函數?

3. 如何定義函數?

4. 如何調用(執行)函數?

P9?09.尚硅谷_JS高級_回調函數?09:54

1. 什么函數才是回調函數?

2. 常見的回調函數?

P10?10.尚硅谷_JS高級_IIFE?14:49

P11?11.尚硅谷_JS高級_函數中的this?10:50

1. this是什么?

2. 如何確定this的值?

P12?12.尚硅谷_JS高級_關于語句分號問題?18:38

P13?13.尚硅谷_JS高級_webstorm設置?23:02

WebStorm 導入\導出 設置(Import Settings ...\Export Settings ...)

WebStrom 快捷鍵

WebStrom 代碼模板

P14?14.尚硅谷_JS高級_復習?55:51

1:數據類型

2:數據、變量與內存

3:對象

4:函數

基礎總結深入

數據類型的分類和判斷

數據,變量, 內存的理解

對象的理解和使用

函數的理解和使用


P7?07.尚硅谷_JS高級_對象?23:30

1. 什么是對象?

1. 什么是對象?

  • 多個數據的封裝體(集合體)。
  • 用于保存多個數據的容器。
  • 一個對象代表現實中的一個事物(代表現實中的某個事物,是該事物在編程中的抽象)。

2. 為什么要用對象?

2. 為什么要用對象?

  • 便于對多個數據進行統一管理。

3. 對象的組成

3. 對象的組成? ?對象中的函數是方法;對象中的字符串、數字等等叫屬性。

  • 屬性:屬性名(字符串)和屬性值(任意)組成。(代表現實事物的狀態數據;屬性名都是字符串類型,屬性值是任意類型)
  • 方法:一種特別的屬性(屬性值是函數)。(代表現實事物的行為數據)

4. 如何訪問對象內部數據?

4. 如何訪問對象內部數據?

  • .屬性名:編碼簡單,但有時不能用
  • ['屬性名']:編碼麻煩,但通用

5. 什么時候必須使用['屬性名']的方式?

問題:什么時候必須使用['屬性名']的方式?

  • 屬性名包含特殊字符:-、空格(屬性名不是合法的標識名)。
  • 屬性名不確定。

P8?08.尚硅谷_JS高級_函數?15:59

1. 什么是函數?

1. 什么是函數?

  • 實現特定功能的n條語句的封裝體;
  • 只有函數是可執行的,其它類型的數據是不能執行;
  • 函數也是對象。

2. 為什么要用函數?

2. 為什么要用函數?

  • 提高代碼復用;
  • 便于閱讀和交流。

3. 如何定義函數?

3. 如何定義函數?

  • 函數聲明:整體會被提升到當前作用域頂部。
  • 表達式:也會提升到頂部,但是只有變量名提升。

?

4. 如何調用(執行)函數?

4. 如何調用(執行)函數?

  • test():直接調用
  • obj.test():通過對象調用
  • new test():new 調用
  • test.call/apply(obj):臨時讓test成為obj的方法進行調用

P9?09.尚硅谷_JS高級_回調函數?09:54

1. 什么函數才是回調函數?

1. 什么函數才是回調函數?

  • 用戶定義的
  • 用戶沒有直接調用
  • 但最終它執行了(在某個時刻或某個條件下? ?在特定條件或時刻)
  • 2. 常見的回調函數?

    2. 常見的回調函數?

    • dom事件回調函數 ==> 發生事件的dom元素
    • 定時器回調函數 ==> window
      • 超時定時器
      • 循環定時器
    • 后面學:ajax請求回調函數、生命周期回調函數

    ??

    P10?10.尚硅谷_JS高級_IIFE?14:49

    1. 理解

    • 全稱:Immediately-Invoked Function Expression,立即調用函數表達式
    • 別名:匿名函數自調用

    2. 作用

    • 隱藏內部實現
    • 不會污染外部(全局)命名空間
    • 用它來編碼js模塊

    ?

    就是一個匿名函數 ?然后去調用它,它會立即執行,并且只能執行一次。

    得是一個表達式,不能是函數聲明。

    56集李立超老師講過,只不過沒有提IIFE,內容是一樣的。

    P11?11.尚硅谷_JS高級_函數中的this?10:50

    1. this是什么?

    1. this是什么?

    • 任何函數本質上都是通過某個對象來調用的,如果沒有直接指定就是window。
    • 所有函數內部都有一個變量this。
    • 它的值是調用函數的當前對象。
      • 一個關鍵字,一個內置的引用變量;
      • 在函數中都可以直接使用this;
      • this代表調用函數的當前對象;
      • 在定義函數時,this還沒有確定,只有在執行時才動態確定(綁定)的。

    根據 ?調用函數的方式 ?不同,this會指向不同的對象:

  • 以函數的形式調用,this指向window(因為,一切函數都是window的方法;call( )或apply() 通過第一個實參來指定函數中this);
  • 以方法的形式調用,this指向方法調用的對象;
  • 以構造函數的形式調用時,this就是新創建的對象。
  • 2. 如何確定this的值?

    • test():window
    • p.test():p
    • new test():新創建的對象
    • p.call(obj):obj

    前置知識:本質上任何函數在執行時都是通過某個對象調用的。

    ??

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>07_函數中的this</title></head><body><script type="text/javascript">function Person(color) {console.log(this);this.color = color;this.getColor = function() {console.log(this);return this.color;};this.setColor = function(color) {console.log(this);this.color = color;};}Person("red"); //this是誰? Windowvar p = new Person("yello"); //this是誰? pp.getColor(); //this是誰? pvar obj = {};p.setColor.call(obj, "black"); //this是誰? obj 讓setColor方法成為obj對象的方法進行調用var test = p.setColor;test(); //this是誰? windowfunction fun1() {function fun2() {console.log(this);}fun2(); //this是誰? window}fun1();</script></body> </html>

    P12?12.尚硅谷_JS高級_關于語句分號問題?18:38

  • js一條語句的后面可以不加分號?
  • 是否加分號是編碼風格問題,沒有應該不應該,只有你自己喜歡不喜歡。
  • 在下面2種情況下不加分號會有問題:
  • 小括號開頭的前一條語句;
  • 中方括號開頭的前一條語句。
  • 解決辦法:在行首加分號
  • 強有力的例子:vue.js庫
  • 知乎熱議:https://www.zhihu.com/question/20298345
  • ??

    ??

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>01_分號問題</title></head><body><script type="text/javascript">// 情形一: 小括號開頭的前一條語句var a = 3;(function() {})/*錯誤理解: 將3看成是函數調用var a = 3(function () {})*/// 情形二: 中方括號開頭的前一條語句var b = a;[1, 3, 5].forEach(function(item) {console.log(item)})/*錯誤理解:a = b[5].forEach(function(e){console.log(e)})*/</script></body> </html>

    P13?13.尚硅谷_JS高級_webstorm設置?23:02

    WebStorm 導入\導出 設置(Import Settings ...\Export Settings ...)

    ??

    ?

    WebStrom 快捷鍵

    * 向下復制一行(Duplicate Lines) Ctrl+Down * 修改變量名與方法名 Alt+Shift+R * 向下移動行 Alt+Down * 顯示設置窗口 Ctrl+Alt+S * 向上開始新的一行(Start New Line before current) Ctrl+Alt+Enter * 查看文檔說明 F2 * 光標移動到行首(Line Start) Ctrl+Shift+S * 光標移動到行尾(Line End) Ctrl+Shift+D * 顯示設置窗口 Ctrl+Alt+S * 向上開始新的一行(Start New Line before current) Ctrl+Alt+Enter * 向下開始新的一行 Shift+Enter * 提示補全 Alt+/ * 查看文件結構 Ctrl+O * 萬能解錯/生成返回值變量 Alt + Enter * 單選注釋 Ctrl + / * 多行注釋 Ctrl+Shift+/ * 格式化代碼 Ctrl+shift+F * 大寫轉小寫 Ctrl+shift+Y * 小寫轉大寫 Ctrl+shift+X * 查找/替換(當前) Ctrl+F * 查找/替換(全局) Ctrl+H * 最近打開過的文件 Ctrl+E * 刪除一行或選中行 Ctrl+D * 查找文件 Double Shift * 查找某個類 Ctrl+Shift+T * 提示方法參數類型(Parameter Info) Ctrl+Alt+/ * 抽取方法(Extract Method) Alt+Shift+Q * 補全當前語句 Ctrl+Shift +Enter * 打開指定文件夾(Show in Explorer) Ctrl+Shift+V * 局部變量抽取為成員變量(Introduce Field) Alt+Shift+F * 查找方法在哪有被調用(Call Hierarchy) Ctrl+Shift+H * 展開當前代碼(Expand) Alt+Shift+A * 展開所有代碼(Expand All) Alt+A * 收縮當前代碼(Collapse) Alt+Shift+C * 收縮所有代碼(Collapse All) Alt+C * 打開默認瀏覽器(Open In Browser) Ctrl+B* 提示忽略大小寫 : Settings -->Code Completion-->case sensitive Completion-->選擇none * 設置文件編碼 : Settings-->File Encodings-->都選擇為utf-8

    WebStrom 代碼模板

    ---------------------------HTML模板------------------------------* scr1script結構<script type='text/javascript'></script>* scr2script結構(引入js)<script type="text/javascript" src="$src$"></script>---------------------------JS模板------------------------------* cons日志輸出console.log($content$);* for1一般for循環for (var $INDEX$ = 0; $INDEX$ < $ARRAY$.length; $INDEX$++) {var $VAR$ = $ARRAY$[$INDEX$];$END$}* for2for in 循環for (var $VAR$ in $ARRAY$) {$END$}* funnfunction $fun$($PARAM$) {$END$}* if1一重條件if($condition$){$statement$}* if2二重條件if($condition$){$statement$} else {$statement2$}* use應用嚴格模式"use strict";---------------------------AngularJs模板------------------------------* $v為作用域添加屬性$scope.name = xxxx; * $f為作用域添加方法$scope.fun = function(){} * $on綁定事件監聽$scope.$on('click', function (event) { }); * $w監聽Angular Model數據$scope.$watch('$watchExpr$',function(newValue, oldValue){ }); * ngmo創建模塊angular.module('name', []); * ngmc定義控制器controller('$cname$', function($scope){$statement$}) * ngmfa通過factory定義服務factory('$factoryName$', function($dependencies$){$END$}) * ngms通過service定義服務service('$serviceName$', function($injectables$) {$END$}) * ngmfi定義過濾器filter('$filterName$', function($injectables$) {return function(input, $args$) {$END$};})------------------------------------------------------------------------

    P14?14.尚硅谷_JS高級_復習?55:51

    1:數據類型

    1. undefined與null的區別?
    ? * undefined代表變量沒有賦值
    ? * null: 代表變量賦值了, 只是值為null
    2. 什么時候將變量賦值為null?
    ? * 初始化賦值: 將要作為引用變量使用, 但對象還沒有確定
    ? * 結束時: 將變量指向的對象成為垃圾對象
    3. 理解變量類型與數據類型?
    ? * js的變量本身是沒有類型的, 變量的類型實際上是變量內存中數據的類型
    ? * 變量類型:
    ? ? * 基本類型: 保存基本類型數據的變量
    ? ? * 引用類型: 保存對象地址值的變量
    ? * 數據對象
    ? ? * 基本類型
    ? ? * 對象類型

    2:數據、變量與內存

    1. 什么是數據?
    ? * 存儲于內存中代表特定信息的'東東', 本質就是0101二進制
    ? * 具有可讀和可傳遞的基本特性
    ? * 萬物(一切)皆數據, 函數也是數據
    ? * 程序中所有操作的目標: 數據
    ? ? * 算術運算
    ? ? * 邏輯運算
    ? ? * 賦值
    ? ? * 調用函數傳參
    ? ? ...
    2. 什么是內存?
    ? * 內存條通電后產生的存儲空間(臨時的)
    ? * 產生和死亡: 內存條(集成電路板)==>通電==>產生一定容量的存儲空間==>存儲各種數據==>斷電==>內存全部消失
    ? * 內存的空間是臨時的, 而硬盤的空間是持久的
    ? * 分配內存: 聲明變量和函數或創建對象時, JS引擎會自動為此分配一定大小的內存來存放對應的數據
    ? * 釋放內存: 清空內存中的數據, 標識內存可以再分配使用(內存不釋放就不能復用)
    ? ? * 自動釋放: 棧空間的局部變量
    ? ? * 垃圾回調器回調: 堆空間的垃圾對象
    ? * 一塊內存包含2個數據
    ? ? * 內部存儲的數據(一般數據/地址數據)
    ? ? * 內存地址值數據
    ? * 內存分類
    ? ? * 棧: 全局變量, 局部變量 (空間較小)
    ? ? * 堆: 對象 (空間較大)
    3. 什么是變量?
    ? * 值可以變化的量, 由變量名與變量值組成
    ? * 一個變量對應一塊小內存, 變量名用來查找到內存, 變量值就是內存中保存的內容
    4. 內存,數據, 變量三者之間的關系
    ? * 內存是一個容器, 用來存儲程序運行需要操作的數據
    ? * 變量是內存的標識, 我們通過變量找到對應的內存, 進而操作(讀/寫)內存中的數據


    1. 問題1: var a = xxx, a內存中到底保存的是什么?
    ? * xxx是一個基本數據
    ? * xxx是一個對象
    ? * xxx是一個變量

    2. 關于引用變量賦值問題
    ? * 2個引用變量指向同一個對象, 通過一個引用變量修改對象內部數據, 另一個引用變量也看得見
    ? * 2個引用變量指向同一個對象,讓一個引用變量指向另一個對象, 另一個引用變量還是指向原來的對象

    3. 問題: 在js調用函數時傳遞變量參數時, 是值傳遞還是引用傳遞?
    ? * 只有值傳遞, 沒有引用傳遞, 傳遞的都是變量的值, 只是這個值可能是基本數據, 也可能是地址(引用)數據
    ? * ?如果后一種看成是引用傳遞, 那就值傳遞和引用傳遞都可以有

    4. 問題: JS引擎如何管理內存?
    ? 1. 內存生命周期
    ? ? 1). 分配需要的內存
    ? ? 2). 使用分配到的內存
    ? ? 3). 不需要時將其釋放/歸還
    ? 2. 釋放內存
    ? ? * 為執行函數分配的棧空間內存: 函數執行完自動釋放
    ? ? * 存儲對象的堆空間內存: 當內存沒有引用指向時, 對象成為垃圾對象, 垃圾回收器后面就會回收釋放此內存

    3:對象

    1. 什么是對象?
    ? * 代表現實中的某個事物, 是該事物在編程中的抽象
    ? * 多個數據的集合體(封裝體)
    ? * 用于保存多個數據的容器
    2. 為什么要用對象?
    ? * 便于對多個數據進行統一管理
    3. 對象的組成
    ? * 屬性
    ? ? * 代表現實事物的狀態數據
    ? ? * 由屬性名和屬性值組成
    ? ? * 屬性名都是字符串類型, 屬性值是任意類型
    ? * 方法
    ? ? * 代表現實事物的行為數據
    ? ? * 是特別的屬性==>屬性值是函數
    4. 如何訪問對象內部數據?
    ? * .屬性名: 編碼簡單, 但有時不能用
    ? * ['屬性名']: 編碼麻煩, 但通用


    1. 問題1: var a = xxx, a內存中到底保存的是什么?
    ? * xxx是一個基本數據
    ? * xxx是一個對象
    ? * xxx是一個變量

    2. 關于引用變量賦值問題
    ? * 2個引用變量指向同一個對象, 通過一個引用變量修改對象內部數據, 另一個引用變量也看得見
    ? * 2個引用變量指向同一個對象,讓一個引用變量指向另一個對象, 另一個引用變量還是指向原來的對象

    3. 問題: 在js調用函數時傳遞變量參數時, 是值傳遞還是引用傳遞?
    ? * 只有值傳遞, 沒有引用傳遞, 傳遞的都是變量的值, 只是這個值可能是基本數據, 也可能是地址(引用)數據
    ? * ?如果后一種看成是引用傳遞, 那就值傳遞和引用傳遞都可以有

    4. 問題: JS引擎如何管理內存?
    ? 1. 內存生命周期
    ? ? 1). 分配需要的內存
    ? ? 2). 使用分配到的內存
    ? ? 3). 不需要時將其釋放/歸還
    ? 2. 釋放內存
    ? ? * 為執行函數分配的棧空間內存: 函數執行完自動釋放
    ? ? * 存儲對象的堆空間內存: 當內存沒有引用指向時, 對象成為垃圾對象, 垃圾回收器后面就會回收釋放此內存

    4:函數

    1. 什么是函數?
    ? * 具有特定功能的n條語句的封裝體
    ? * 只有函數是可執行的, 其它類型的數據是不可執行的
    ? * 函數也是對象
    2. 為什么要用函數?
    ? * 提高代碼復用
    ? * 便于閱讀和交流
    3. 如何定義函數?
    ? * 函數聲明
    ? * 表達式
    4. 調用(執行)函數
    ? * test()
    ? * new test()
    ? * obj.test()
    ? * test.call/apply(obj)


    1. 什么函數才是回調函數?
    ? * 你定義的
    ? * 你沒有直接調用
    ? * 但最終它執行了(在特定條件或時刻)
    2. 常見的回調函數?
    ? * DOM事件函數
    ? * 定時器函數

    ? * ajax回調函數(后面學)
    ? * 生命周期回調函數(后面學)


    1. 理解
    ? * 全稱: Immediately-Invoked Function Expression 立即調用函數表達式
    ? * 別名: 匿名函數自調用
    2. 作用
    ? * 隱藏內部實現
    ? * 不污染外部命名空間


    function Person(color) {
    ?? ?console.log(this);
    ?? ?this.color = color;
    ?? ?this.getColor = function() {
    ?? ??? ?console.log(this);
    ?? ??? ?return this.color;
    ?? ?};
    ?? ?this.setColor = function(color) {
    ?? ??? ?console.log(this);
    ?? ??? ?this.color = color;
    ?? ?};
    }

    Person("red"); //this是誰? Window

    var p = new Person("yello"); //this是誰? p

    p.getColor(); //this是誰? p

    var obj = {};
    p.setColor.call(obj, "black"); //this是誰? obj 讓setColor方法成為obj對象的方法進行調用

    var test = p.setColor;
    test(); //this是誰? window

    function fun1() {
    ?? ?function fun2() {
    ?? ??? ?console.log(this);
    ?? ?}
    ?? ?fun2(); //this是誰? window
    }
    fun1();

    基礎總結深入

    數據類型的分類和判斷

    • 基本(值)類型

      • Number ----- 任意數值 -------- typeof

      • String ----- 任意字符串 ------ typeof

      • Boolean ---- true/false ----- typeof

      • undefined --- undefined ----- typeof/===

      • null -------- null ---------- ===

    • 對象(引用)類型

      • Object ----- typeof/instanceof

      • Array ------ instanceof

      • Function ---- typeof

    數據,變量, 內存的理解

    • 什么是數據?

      • 在內存中可讀的, 可傳遞的保存了特定信息的'東東'

      • 一切皆數據, 函數也是數據

      • 在內存中的所有操作的目標: 數據

    • 什么是變量?

      • 在程序運行過程中它的值是允許改變的量

      • 一個變量對應一塊小內存, 它的值保存在此內存中

    • 什么是內存?

      • 內存條通電后產生的存儲空間(臨時的)

      • 一塊內存包含2個方面的數據

        • 內部存儲的數據

        • 地址值數據

      • 內存空間的分類

        • 棧空間: 全局變量和局部變量

        • 堆空間: 對象

    • 內存,數據, 變量三者之間的關系

      • 內存是容器, 用來存儲不同數據

      • 變量是內存的標識, 通過變量我們可以操作(讀/寫)內存中的數據

    對象的理解和使用

    • 什么是對象?

      • 多個數據(屬性)的集合

      • 用來保存多個數據(屬性)的容器

    • 屬性組成:

      • 屬性名 : 字符串(標識)

      • 屬性值 : 任意類型

    • 屬性的分類:

      • 一般 : 屬性值不是function 描述對象的狀態

      • 方法 : 屬性值為function的屬性 描述對象的行為

    • 特別的對象

      • 數組: 屬性名是0,1,2,3之類的索引

      • 函數: 可以執行的

    • 如何操作內部屬性(方法)

      • .屬性名

      • ['屬性名'] ?屬性名有特殊字符/屬性名是一個變量?

    函數的理解和使用

    • 什么是函數?

      • 用來實現特定功能的, n條語句的封裝體

      • 只有函數類型的數據是可以執行的, 其它的都不可以

    • 為什么要用函數?

      • 提高復用性

      • 便于閱讀交流

    • 函數也是對象

      • instanceof Object===true

      • 函數有屬性: prototype

      • 函數有方法: call()/apply()

      • 可以添加新的屬性/方法

    • 函數的3種不同角色

      • 一般函數 : 直接調用

      • 構造函數 : 通過new調用

      • 對象 : 通過.調用內部的屬性/方法

    • 函數中的this

      • 顯式指定誰: obj.xxx()

      • 通過call/apply指定誰調用: xxx.call(obj)

      • 不指定誰調用: xxx() : window

      • 回調函數: 看背后是通過誰來調用的: window/其它

    • 匿名函數自調用:

      ?(function(w, obj){//實現代碼})(window, obj)
      • 專業術語為: IIFE (Immediately Invoked Function Expression) 立即調用函數表達式

    • 回調函數的理解

      • 什么函數才是回調函數?

        • 你定義的

        • 你沒有調用

        • 但它最終執行了(在一定條件下或某個時刻)

      • 常用的回調函數

        • dom事件回調函數

        • 定時器回調函數

        • ajax請求回調函數(后面講解)

        • 生命周期回調函數(后面講解)

    總結

    以上是生活随笔為你收集整理的JavaScript高级day01-PM【对象、函数、回调函数、IIFE、this、关于语句分号问题、webstorm代码模板、复习】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。