整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript 函數調用

          JavaScript 函數有 4 種調用方式。

          每種方式的不同方式在于 this 的初始化。

          this 關鍵字

          一般而言,在Javascript中,this指向函數執行時的當前對象。

          注意 this 是保留關鍵字,你不能修改 this 的值。

          調用 JavaScript 函數

          我們知道如何創建函數。

          函數中的代碼在函數被調用后執行。

          作為一個函數調用

          實例

          function myFunction(a, b) {

          return a * b;

          }

          myFunction(10, 2); // myFunction(10, 2) 返回 20

          以上函數不屬于任何對象。但是在 JavaScript 中它始終是默認的全局對象。

          在 HTML 中默認的全局對象是 HTML 頁面本身,所以函數是屬于 HTML 頁面。

          在瀏覽器中的頁面對象是瀏覽器窗口(window 對象)。以上函數會自動變為 window 對象的函數。

          myFunction() 和 window.myFunction() 是一樣的:

          實例

          function myFunction(a, b) {

          return a * b;

          }

          window.myFunction(10, 2); // window.myFunction(10, 2) 返回 20

          這是調用 JavaScript 函數常用的方法, 但不是良好的編程習慣 全局變量,方法或函數容易造成命名沖突的bug。

          全局對象

          當函數沒有被自身的對象調用時, this 的值就會變成全局對象。

          在 web 瀏覽器中全局對象是瀏覽器窗口(window 對象)。

          該實例返回 this 的值是 window 對象:

          實例

          function myFunction() {

          return this;

          }

          myFunction(); // 返回 window 對象

          函數作為全局對象調用,會使 this 的值成為全局對象。使用 window 對象作為一個變量容易造成程序崩潰。

          函數作為方法調用

          在 JavaScript 中你可以將函數定義為對象的方法。

          以下實例創建了一個對象 (myObject), 對象有兩個屬性 (firstNamelastName), 及一個方法 (fullName):

          實例

          var myObject = {

          firstName:"John",

          lastName: "Doe",

          fullName: function () {

          return this.firstName + " " + this.lastName;

          }

          }

          myObject.fullName(); // 返回 "John Doe"

          fullName 方法是一個函數。函數屬于對象。 myObject 是函數的所有者。

          this對象,擁有 JavaScript 代碼。實例中 this 的值為 myObject 對象。

          測試以下!修改 fullName 方法并返回 this 值:

          實例

          var myObject = {

          firstName:"John",

          lastName: "Doe",

          fullName: function () {

          return this;

          }

          }

          myObject.fullName(); // 返回 [object Object] (所有者對象)

          函數作為對象方法調用,會使得 this 的值成為對象本身。

          使用構造函數調用函數

          如果函數調用前使用了 new 關鍵字, 則是調用了構造函數。

          這看起來就像創建了新的函數,但實際上 JavaScript 函數是重新創建的對象:

          實例

          // 構造函數:

          function myFunction(arg1, arg2) {

          this.firstName = arg1;

          this.lastName = arg2;

          }

          // Thiscreates a new object

          var x = new myFunction("John","Doe");

          x.firstName; // 返回 "John"

          構造函數的調用會創建一個新的對象。新對象會繼承構造函數的屬性和方法。

          構造函數中 this 關鍵字沒有任何的值。this 的值在函數調用時實例化對象(new object)時創建。

          作為函數方法調用函數

          在 JavaScript 中, 函數是對象。JavaScript 函數有它的屬性和方法。

          call()apply() 是預定義的函數方法。 兩個方法可用于調用函數,兩個方法的第一個參數必須是對象本身。

          實例

          function myFunction(a, b) {

          return a * b;

          }

          myFunction.call(myObject, 10, 2); // 返回 20

          實例

          function myFunction(a, b) {

          return a * b;

          }

          myArray = [10,2];

          myFunction.apply(myObject, myArray); // 返回 20

          兩個方法都使用了對象本身作為第一個參數。 兩者的區別在于第二個參數: apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,而call則作為call的參數傳入(從第二個參數開始)。

          在 JavaScript 嚴格模式(strict mode)下, 在調用函數時第一個參數會成為 this 的值, 即使該參數不是一個對象。

          在 JavaScript 非嚴格模式(non-strict mode)下, 如果第一個參數的值是 null 或 undefined, 它將使用全局對象替代。

          通過 call() 或 apply() 方法你可以設置 this 的值, 且作為已存在對象的新方法調用。

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

          文實例講述了JavaScript函數的4種調用方法。分享給大家供大家參考,具體如下:

          JavaScript 函數有 4 種調用方式:

          1. 作為一個函數調用
          2. 函數作為方法調用
          3. 使用構造函數調用函數
          4. 作為函數方法調用函數

          分述如下:

          每種方式的不同方式在于 this 的初始化。

          作為一個函數調用

          function myFunction(a, b) {
           return a * b;
          }
          myFunction(10, 2); // myFunction(10, 2) 返回 20
          

          以上函數不屬于任何對象。但是在 JavaScript 中它始終是默認的全局對象。

          在 HTML 中默認的全局對象是 HTML 頁面本身,所以函數是屬于 HTML 頁面。

          在瀏覽器中的頁面對象是瀏覽器窗口(window 對象)。以上函數會自動變為 window 對象的函數。

          myFunction() 和 window.myFunction() 是一樣的:

          function myFunction(a, b) {
           return a * b;
          }
          window.myFunction(10, 2); // window.myFunction(10, 2) 返回 20
          

          當函數沒有被自身的對象調用時, this 的值就會變成全局對象。

          在 web 瀏覽器中全局對象是瀏覽器窗口(window 對象)。

          該實例返回 this 的值是 window 對象:

          function myFunction() {
           return this;
          }
          myFunction(); // 返回 window 對象
          

          函數作為全局對象調用,會使 this 的值成為全局對象。

          使用 window 對象作為一個變量容易造成程序崩潰。

          函數作為方法調用

          var myObject = {
           firstName:"John",
           lastName: "Doe",
           fullName: function () {
           return this.firstName + " " + this.lastName;
           }
          }
          myObject.fullName(); // 返回 "John Doe"
          

          fullName 方法是一個函數。函數屬于對象。 myObject 是函數的所有者。

          this對象,擁有 JavaScript 代碼。實例中 this 的值為 myObject 對象。

          測試以下!修改 fullName 方法并返回 this 值:

          var myObject = {
           firstName:"John",
           lastName: "Doe",
           fullName: function () {
           return this;
           }
          }
          myObject.fullName(); // 返回 [object Object] (所有者對象)
          

          函數作為對象方法調用,會使得 this 的值成為對象本身。

          使用構造函數調用函數

          如果函數調用前使用了 new 關鍵字, 則是調用了構造函數。

          這看起來就像創建了新的函數,但實際上 JavaScript 函數是重新創建的對象:

          // 構造函數:
          function myFunction(arg1, arg2) {
           this.firstName = arg1;
           this.lastName = arg2;
          }
          // This creates a new object
          var x = new myFunction("John","Doe");
          x.firstName; // 返回 "John"
          

          構造函數的調用會創建一個新的對象。新對象會繼承構造函數的屬性和方法。

          構造函數中 this 關鍵字沒有任何的值。

          this 的值在函數調用時實例化對象(new object)時創建。

          作為函數方法調用函數

          在 JavaScript 中, 函數是對象。JavaScript 函數有它的屬性和方法。

          call() 和 apply() 是預定義的函數方法。 兩個方法可用于調用函數,兩個方法的第一個參數必須是對象本身。

          function myFunction(a, b) {
           return a * b;
          }
          myObject = myFunction.call(myObject, 10, 2); // 返回 20
          function myFunction(a, b) {
           return a * b;
          }
          myArray = [10, 2];
          myObject = myFunction.apply(myObject, myArray); // 返回 20
          

          兩個方法都使用了對象本身作為第一個參數。 兩者的區別在于第二個參數: apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,而call則作為call的參數傳入(從第二個參數開始)。

          在 JavaScript 嚴格模式(strict mode)下, 在調用函數時第一個參數會成為 this 的值, 即使該參數不是一個對象。

          在 JavaScript 非嚴格模式(non-strict mode)下, 如果第一個參數的值是 null 或 undefined, 它將使用全局對象替代。

          最后

          以下是總結出來最全前端框架視頻,包含: javascript/vue/react/angualrde/express/koa/webpack 等學習資料。

          【領取方式】

          關注頭條 前端全棧架構丶第一時間獲取最新前端資訊學習

          手機用戶可私信關鍵詞 【前端】即可獲取全棧工程師路線和學習資料!

          :常規寫法

          //函數的寫法

          function run{

          alert("常規寫法") //這里是你函數的內容

          }

          //調用

          run()

          2:匿名函數寫法

          var run = function(){

          alert("這是一種聲明函數的寫法,左邊是一個變量,右邊是一個函數的表達式,

            意思就是把一個匿名函數的表達式賦值給了一個變量myrun,只是聲明了一個變量指向了一個函數對象")//這里是你函數的內容

          }

          run()

          3:將方法作為一個對象

          //作為對象方法,函數寫法,這里創建了兩個函數外面用{}包裹起來

          var Text = {

          run1 : function(){

          alert("這個必須放在一個對象內部,放在外邊會出錯")//這里是函數內容

          },

          run2 : function(){

          alert("這個必須放在一個對象內部,放在外邊會出錯")//這里是函數內容

          }

          }

          Text.run1()//調用第一個函數

          Text.run2()//調用第二個函數

          4:構造函數中給對象添加方法

          javascript中的每個對象都有prototype屬性,Javascript中對象的prototype屬性的解釋是:返回對象類型原型的引用。

          // 給對象添加方法

          var funName = function(){};

          funName.prototype.way = function(){

          alert('這是在funName函數上的原始對象上加了一個way方法,構造函數中用到');

          }

          // 調用

          var funname = new text();// 創建對象

          funname.way();//調用對象屬性

          5:自執行函數

          js自執行函數查到了幾種不同寫法

          //方法1:最前最后加括號

          (

          function(){alert(1);}()

          );

          /*這是jslint推薦的寫法,好處是,能提醒閱讀代碼的人,這段代碼是一個整體。

          例如,在有語法高亮匹配功能的編輯器里,光標在第一個左括號后時,最后一個右括號也會高亮,看代碼的人一眼就可以看到這個整體。 */

          //方法2:function外面加括號

          (function(){alert(1);})();

          //這種做法比方法1少了一個代碼整體性的好處。

          //方法3:function前面加運算符,常見的是!與void 。

          !function(){alert(1);}();

          void function(){alert(2);}();


          主站蜘蛛池模板: 韩国福利一区二区三区高清视频| 熟妇人妻一区二区三区四区 | 精品一区二区三区AV天堂| 精品亚洲AV无码一区二区三区| 麻豆高清免费国产一区| 国产乱人伦精品一区二区 | 亚洲AV无码一区二三区| 国精产品一区二区三区糖心| 亚洲av无码一区二区三区乱子伦| 日韩一区二区超清视频| 国产一区韩国女主播| 国模大尺度视频一区二区| 久久精品午夜一区二区福利| 精品国产一区二区二三区在线观看 | 亚洲一区二区三区AV无码| 91久久精品午夜一区二区| 在线观看日韩一区| 久久免费区一区二区三波多野| 亚洲日韩中文字幕无码一区| 亚洲视频一区二区| 欧美日韩精品一区二区在线观看| 无码人妻AⅤ一区二区三区水密桃| 国产波霸爆乳一区二区 | 国产aⅴ一区二区| 少妇激情AV一区二区三区| 在线视频亚洲一区| 中文字幕亚洲综合精品一区| 精品一区二区三区电影| 精品无码一区二区三区爱欲九九 | 在线观看一区二区三区av| 亚洲国产专区一区| 亚洲乱色熟女一区二区三区蜜臀 | 亚洲.国产.欧美一区二区三区| 国产精品无码一区二区在线观一 | 一区二区三区AV高清免费波多| 久久er99热精品一区二区| 国产精品亚洲产品一区二区三区| 精品一区二区视频在线观看| 中文字幕无码免费久久9一区9| 手机福利视频一区二区 | 一本一道波多野结衣AV一区|