我理解的this

来源:http://www.cnblogs.com/chuaWeb/archive/2016/02/18/5198957.html
-Advertisement-
Play Games

this指的就是當前上下文環境對象,主要分兩種情況。 1.函數中的this指的是調用該函數的那個上下文環境對象 這個的理解還是非常重要的。 看一個全局函數的例子 var b = 1; function a(){ alert(this.b); } a();//1 這裡面函數a是屬於全局變數window


  this指的就是當前上下文環境對象,主要分兩種情況。

1.函數中的this指的是調用該函數的那個上下文環境對象

  這個的理解還是非常重要的。 

  看一個全局函數的例子

var b = 1;
function a(){
  alert(this.b);
}
a();//1

  這裡面函數a是屬於全局變數window。所以調用a的時候實際上和window.a()等同。所以a函數中的this指的是調用a函數的調用者window。所以列印出1就不稀奇了。 

  再看一個對象的例子

var person = {
  name:'chua',
  do:function(){alert(this.name)}
}
person.do();//'chua'

  這裡面函數do是屬於對象person。所以調用person.do的時候函數中的this指的是調用do函數的調用者person。所以列印出this.name就是person.name列印'chua'。

  最後是call/apply的例子

var b = 0; 
var c = {
  a: function(){alert(this.b); },
  b: 1
}
var d = { b: 2};
c.a.apply(); //0 
c.a.apply(d); //2

  apply第一個參數會替換上下文環境,沒有第一個參數的時候預設是全局變數window。

  

2.構造函數調用

  構造函數調用實際上就失竊換了上下文環境到新建的對象中。

function a(){
    this.b = 1;
}
var c = new a();
alert(c.b); //1
alert(typeof b); //"undefined"

   new a()後上下文環境對象變成了c。

  參考jQuery框架中的new的深度理解

 

  如果覺得本文不錯,請點擊右下方【推薦】!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 計算:微信金額是拆的時候實時算出來,不是預先分配的,採用的是純記憶體計算,不需要預算空間存儲。採取實時計算金額的考慮:預算需要占存儲,實時效率很高,預算才效率低。2014年微信紅包使用資料庫硬抗整個流量,2015年使用cache抗流量。 實時性:為什麼明明搶到紅包,點開後發現沒有,2014年的紅包一點
  • Atitit. Atiposter 發帖機版本歷史 編年史 V1 初步實現sina csdn cnblogs V2 實現qzone sohu 的發帖功能 順便重構介面實現分離 V3多文件迴圈發帖(初步bbs版本) V4 sina發帖功能fix增加二次貼入內容 發佈時的確認關閉提示folat框子 調整
  • Atitit swt 4.3 4.4 4.5 新特性java attilax總結 1. 4.5 Release - June 3, 20151 1.1. Older Releases1 2. SWT 4.4.2, 4 February 2015.1 3. SWT 4.3.2, 21 February
  • 重要程度:★★★★☆ 一、什麼是組合模式 樹形結構的實現,用於描述“整體-部分”的關係; 二、補充說明 使用場景:部分/整體場景,如樹形菜單; 文件/文件夾; 樹形結構的公司層級關係... 三、角色 抽象角色 葉子角色 樹枝角色 客戶端角色 四、例子,JAVA實現 利用組合模式實現如下文件/文件夾的
  • 橋接模式就是對一個類的方法進行抽象化,吧不相關的因素提取出來,發展出第二個類 1 package com.shejimoshi.structural.Bridge; 2 3 4 /** 5 * 功能:橋接模式使用 6 * 意圖:將抽象部分與它的實現部分分離,使他們都可以獨立的變化 7 * 適用性:你
  • shadow dom是瀏覽器的一種技術,可以實現讓dom獨立於原有的dom tree,這樣一來就無需擔心id污染、樣式污染、js污染,外部的css並不會影響這個dom,就仿佛是一個影子shadow。並且可以用來隱藏封裝細節,就像上述原生的input[type = "date"]一樣,從而可以用來實現...
  • 效果預覽:http://hovertree.com/code/jquery/smjv6d0n.htm 基於jQuery編寫的橫向自適應幻燈片切換特效 全屏自適應jquery焦點圖切換特效,在IE6這個蛋疼的瀏覽器相容性問題上得到了和諧,相容IE6。 適用瀏覽器:IE6、IE7、IE8、360、Fir
  • 後續如有內容,本篇將會照常更新併排滿15個知識點,以下是其他幾篇譯文的地址: 第一篇地址:( 譯、持續更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 譯、持續更新 ) JavaScript 上分小技巧(二) 第三篇地址:( 譯、持續更新 ) JavaScript 上分小技巧(三)
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...