javascript類型系統之Window

来源:http://www.cnblogs.com/xiaohuochai/archive/2016/01/06/5106435.html
-Advertisement-
Play Games

[1]引用 [2]特性 [3]屬性 [4]方法


目錄
[1]引用 [2]特性 [3]屬性 [4]方法 編碼方法 eval() 數字方法

前面的話

  window對象是Web瀏覽器中javascript的一個終極兜底兒對象,在作用域中處於最末端,是一個包含所有對象的對象。所有在全局作用域中定義的屬性和函數都是window對象的屬性

var myStringVar = 'myString';
var myFunctionVar = function(){};
console.log('myStringVar' in window);//true
console.log('myFunctionVar' in window);//true

 

引用

  通常有兩種引用window對象的方法。第一種是簡單引用賦予window對象的名稱;第二種是在全局作用域中使用this關鍵字

var foo ='bar';
windowRef1 = window;
windowRef2 = this;
console.log(windowRef1,windowRef2);//輸出window對象的引用
console.log(windowRef1.foo,windowRef2.foo);//'bar' 'bar'

 

特性

  window對象是隱式的,通常不顯式引用;即使window對象顯式聲明,它也是隱式的,因為window對象在作用域鏈中是最後一個

//window.alert()和alert()語句基本上是相同的
var foo = {//window對象在這裡是隱式的,window.foo
    fooMethod: function(){
        alert('foo' + 'bar');//window對象在這裡是隱式的,window.alert
        window.alert('foo' + 'bar');//顯式調用window對象,效果一樣
    }
}
foo.fooMethod();//window對象在這裡是隱式的,window.foo.fooMethod()

 

屬性

  window對象共有18個屬性

undefined NaN Infinity  
Boolean String Number Object Array Function Date RegExp 
Error EvalError RangeError ReferenceError SyntaxError TypeError URIError    

  [註意]禁止給undefined、NaN和Infinity賦值

 

方法

  Javascript附帶一些預定義函數,被認為是window對象的方法

編碼方法

encodeURI():對整個URI進行編碼,用特殊的UTF-8替換所有無效的字元

  encodeURI()的不編碼字元有82個:

! # $ & ' ( ) * + , - . / : ; = ? @ _ ~ 0-9 a-z A-Z

encodeURIComponent():對URI的某一段進行編碼(常用於GET方法傳遞參數),用特殊的UTF-8替換所有無效的字元

  一般來說,使用encodeURIComponent()比encodeURI()要多,因為在實踐中更常見的是查詢字元串參數而不是對基礎URI編碼。encodeURIComponent()的不編碼字元有71個:

!  ' ( ) * - . _ ~ 0-9 a-z A-Z

escape():對字元串進行編碼,將字元的unicode編碼轉化為16進位序列

  ES3中反對escape()的使用,並建議用encodeURI和encodeURIComponent代替,不過escape()依然被廣泛的用於cookie的編碼,因為escape()恰好編碼了cookie中的非法字元並且對路徑中常出現的“/”不進行編碼。escape()的不編碼字元有69個:

* + - . / @ _ 0-9 a-z A-Z

decodeURI():解碼encodeURI()

decodeURIComponent():解碼encodeURIComponent()

unescape():解碼escape()

var uri = "http://www.wrox.com/illegal value.htm#start";
console.log(encodeURI(uri));//http://www.wrox.com/illegal%20value.htm#start
console.log(encodeURIComponent(uri));//http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start
console.log(escape(uri));//http%3A//www.wrox.com/illegal%20value.htm%23start
var uri = 'http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start';
console.log(decodeURI(uri));//http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start
console.log(decodeURIComponent(uri));//http://www.wrox.com/illegal value.htm#start
console.log(unescape(uri));//http://www.wrox.com/illegal value.htm#start

eval()

  eval()方法像一個完整的ECMAScript解析器,只接受一個參數,即要執行的JavaScript字元串。當解析器發現代碼中調用eval()方法時,它會將傳入的參數當作實際的ECMAScript語句來解析,然後把執行結果插入到原位置。eval()方法能夠解釋字元串的能力非常強大,但也非常危險。當用它執行用戶輸入數據時,可能會有惡意用戶輸入威脅站點或應用程式字元的代碼,就是所謂的代碼註入

  [註意]在嚴格模式下,外部訪問不到eval()中創建的任何變數或函數,為eval賦值也會導致錯誤

 

數字方法

  Window對象下還有isFinite()、isNaN()、parseFloat()、parseInt()這四個關於數字的方法

  關於它們的詳細信息移步至此


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

-Advertisement-
Play Games
更多相關文章
  • 企業煩惱一:找人的痛苦 調查數據顯示,在一個規模500人以上的企業中,找到跨部門的陌生員工,需要經過3步,高管,人事,前臺。 復興集團是上海市最大的民營企業,管理資產超過了3000億人民幣,集團總部有1000多人,而其下屬企業規模都能達到數千人,並且遍佈在全國全球。 復星集團IT總監趙沛表示,...
  • 普通用戶(個人)團隊企業1.免費額度為每月通話100分鐘、每天發DING 5次。1. 每月通話300分鐘,每天發DING 10次。2. 群組最多可達1500人1. 該公司所有註冊員工的通話分鐘均會上升至1000分鐘/月,每天DING的次數也會增加到30次。2. 群組最多可達1500人3. ...
  • 1.對於過多的控制項,功能類似,數量又多的,可以用include方法。在實現應用中,可以把控制項放入List集合中。private void initView() { // TODO Auto-generated method stub pwd1 = (EditText) findViewByI...
  • 如何獲取當前設備的系統版本!!![[[UIDevice currentDevice] systemVersion] floatValue]獲取App版本NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; // ...
  • 第六章 Android的Drawable Drawable的優點:使用簡單,比自定義view的成本要低;非圖片類型的Drawable占用空間小,有利於減小APK安裝包的大小。 6.1Drawable簡介 Drawable有很多種,他們都表示一種圖像的概念,Drawable常被用來...
  • 一、部分快捷鍵。這個在網上有一大堆,不過筆者認為,還是應該看個人習慣和使用環境吧。如果用得順手,那就是快捷鍵,如果用得不順手,那應該稱其為“輔助鍵”吧。下麵介紹幾個常用的快捷鍵:1.截圖。屏幕部分畫面:command+ Shift + 4保存格式為(.png),路徑是在桌面上面,所以截圖完就在桌面上...
  • 在控制器裡面想調用一個視圖的子視圖的代理方法很簡單1.找到子視圖的協議和代理屬性2.給你想調用的控制項添加代理屬性,遵守的協議和子視圖的一樣3.重寫代理屬性的set方法
  • 拿到設計圖使用markdown標好尺寸、字體大小和顏色等,但是是什麼字體我還不知道如何判斷,估計還得問設計師吧!這是一張手機端的html5網頁,一般考慮適應webkit內核,還有就是需要設置meta標記防止縮放、自適應等,代碼如下:寬度為設備寬度,初始化縮放比為1,最小縮放比為1,不能縮放。由於看到...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...