JavaScript學習要點

来源:https://www.cnblogs.com/wangxingwei/archive/2019/03/08/10496169.html
-Advertisement-
Play Games

Javascript相關內容 1.序列化--json - stringify() 將對象轉換為字元串 - parse() 將字元串轉換為對象 2.字元串轉義--encodeURI - encodeURI(url); - decodeURI(url); - decodeURIComponent(url ...


Javascript相關內容

1.序列化--json

- stringify() 將對象轉換為字元串

- parse() 將字元串轉換為對象

list=[11,22,33,44,55];
  結果:(5) [11, 22, 33, 44, 55]
str=JSON.stringify(list);
  結果:"[11,22,33,44,55]"
list1=JSON.parse(str);
  結果:(5) [11, 22, 33, 44, 55]

2.字元串轉義--encodeURI

- encodeURI(url);

- decodeURI(url);

- decodeURIComponent(url) ;

- encodeURIComponent(url);

url="https://www.sogou.com/web?query=土味程式員";
  轉義結果:"https://www.sogou.com/web?query=土味程式員"
changeStr=encodeURI(url);
  轉義結果:"https://www.sogou.com/web?query=%E7%8E%8B%E6%98%9F%E4%BC%9F"
changeStr1=encodeURIComponent(url);
  轉義結果:"https%3A%2F%2Fwww.sogou.com%2Fweb%3Fquery%3D%E7%8E%8B%E6%98%9F%E4%BC%9F"
decodeURI(changeStr);
  轉義結果:"https://www.sogou.com/web?query=土味程式員"
decodeURIComponent(changeStr1);
  轉義結果:"https://www.sogou.com/web?query=土味程式員

小知識:通常登入界面,第一次登入後,後面就不需要再次登入,可以直接訪問,。原理:客戶端連接後,伺服器會下發一串**********給客戶端,客戶端將**********通過轉義

後保存在cookie中,僅供博主自己參考。

3.eval

  eval方法只接受原始字元串作為參數,如果 string 參數不是原始字元串,那麼該方法將不作任何改變地返回。因此請不要為 eval() 函數傳遞 String 對象來作為參數。

如果試圖覆蓋 eval 屬性或把 eval() 方法賦予另一個屬性,並通過該屬性調用它,則 ECMAScript 實現允許拋出一個 EvalError 異常。(引用百度說明)

  話不多說直接上例子:

num = eval("2+2");
輸出:4
var x=4;
num=eval("x+4");
輸出:8

  python:函數eval(表達式);

      函數exec(執行代碼);

  javascript:eval中既可以是函數也可以是表達式;

4.時間

- Date()函數

var time=new Date();//變數聲明時需要使用new關鍵字
time.getDate();//獲取當前日期
time.getDay();//當前是星期幾
time.getYear();//獲取當前的年

time.setDate(n);
time.setDay(n);
time.setYear(n);

Date的相關函數:

Date() 返回當日的日期和時間。
getDate() 從 Date 對象返回一個月中的某一天 (1 ~ 31)。
getDay() 從 Date 對象返回一周中的某一天 (0 ~ 6)。
getMonth() 從 Date 對象返回月份 (0 ~ 11)。
getFullYear() 從 Date 對象以四位數字返回年份。
getYear() 請使用 getFullYear() 方法代替。
getHours() 返回 Date 對象的小時 (0 ~ 23)。
getMinutes() 返回 Date 對象的分鐘 (0 ~ 59)。
getSeconds() 返回 Date 對象的秒數 (0 ~ 59)。
getMilliseconds() 返回 Date 對象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒數。
getTimezoneOffset() 返回本地時間與格林威治標準時間 (GMT) 的分鐘差。
getUTCDate() 根據世界時從 Date 對象返回月中的一天 (1 ~ 31)。
getUTCDay() 根據世界時從 Date 對象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根據世界時從 Date 對象返回月份 (0 ~ 11)。
getUTCFullYear() 根據世界時從 Date 對象返回四位數的年份。
getUTCHours() 根據世界時返回 Date 對象的小時 (0 ~ 23)。
getUTCMinutes() 根據世界時返回 Date 對象的分鐘 (0 ~ 59)。
getUTCSeconds() 根據世界時返回 Date 對象的秒鐘 (0 ~ 59)。
getUTCMilliseconds() 根據世界時返回 Date 對象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字元串)的毫秒數。
setDate() 設置 Date 對象中月的某一天 (1 ~ 31)。
setMonth() 設置 Date 對象中月份 (0 ~ 11)。
setFullYear() 設置 Date 對象中的年份(四位數字)。
setYear() 請使用 setFullYear() 方法代替。
setHours() 設置 Date 對象中的小時 (0 ~ 23)。
setMinutes() 設置 Date 對象中的分鐘 (0 ~ 59)。
setSeconds() 設置 Date 對象中的秒鐘 (0 ~ 59)。
setMilliseconds() 設置 Date 對象中的毫秒 (0 ~ 999)。
setTime() 以毫秒設置 Date 對象。
setUTCDate() 根據世界時設置 Date 對象中月份的一天 (1 ~ 31)。
setUTCMonth() 根據世界時設置 Date 對象中的月份 (0 ~ 11)。
setUTCFullYear() 根據世界時設置 Date 對象中的年份(四位數字)。
setUTCHours() 根據世界時設置 Date 對象中的小時 (0 ~ 23)。
setUTCMinutes() 根據世界時設置 Date 對象中的分鐘 (0 ~ 59)。
setUTCSeconds() 根據世界時設置 Date 對象中的秒鐘 (0 ~ 59)。
setUTCMilliseconds() 根據世界時設置 Date 對象中的毫秒 (0 ~ 999)。
toSource() 返回該對象的源代碼。
toString() 把 Date 對象轉換為字元串。
toTimeString() 把 Date 對象的時間部分轉換為字元串。
toDateString() 把 Date 對象的日期部分轉換為字元串。
toGMTString() 請使用 toUTCString() 方法代替。
toUTCString() 根據世界時,把 Date 對象轉換為字元串。
toLocaleString() 根據本地時間格式,把 Date 對象轉換為字元串。
toLocaleTimeString() 根據本地時間格式,把 Date 對象的時間部分轉換為字元串。
toLocaleDateString() 根據本地時間格式,把 Date 對象的日期部分轉換為字元串。
UTC() 根據世界時返回 1970 年 1 月 1 日 到指定日期的毫秒數。
valueOf() 返回 Date 對象的原始值。
 
   

5.作用域

  其他語言的作用域 ==》代碼塊;

  python的作用域 ==》 函數;

  JavaScript的作用域 ==》函數;

要點:

  1. JavaScript以函數為作用域。
  2. 函數的作用域在函數未被調用之前已經建立。
  3. 函數的作用域在作用域鏈中,並且也是在調用之前建立。
  4. 函數內的局部變數提前聲明。
name="tuwei";
function func(){
    var name =  "tuwei1";
    function inner(){
        console.log(name);
     }  
    retuen inner;      
}
var ref = func();
    ref();
//列印"tuwei1" ;

  遇到作用域問題嚴格按照上述4點來判斷。

function func(){
    console.log(name);  
    var name="tuwei";
}

func();
//程式列印undefine;  
1.var xxoo=undefine;
2.console.log(name);
3.var xxoo="tuwei";                     

6.面向對象

function Foo(name){
    this.name=name;
    this.sayName=function(){
        console.log(this.name);
    }
}

var obj = new Foo("程式員");
console.log(obj.name);
obj.sayName;
var obj1 = new Foo("程式員1");
console.log(obj1.name);
obj1.sayName;
此處代碼運行有問題:1.只列印了obj.name和obj1.name兩個參數(尚未明白)。
          2.每個對象都會申請一個sayName函數,這樣會占用大量空間(是否有方法解決此問題)。
為瞭解決問題2:javascript引入了原型。
請看代碼分析:
function Foo(name){
    this.name=name;
}
//原型
Foo.prototype={
    // body... 
    'sayName':function(){
        console.log(this.name);
    }
};

var obj = new Foo("程式員");
console.log(obj.name);
obj.sayName;
var obj1 = new Foo("程式員1");
console.log(obj1.name);
obj1.sayName;

  原型的概念類似於python中的class類方法,會將所有對象的相同方法統一存放於某個地區,方便對象的調用。

  格式如上述代碼所示。

  


        

 

 

 

 

 

 

  

 


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

-Advertisement-
Play Games
更多相關文章
  • export default default 本質是將後面變數(值)賦給 default,然後以default名稱輸出。 import 在獲取default變數時,寫在大括弧的外面 ,可自定義名稱。 變數寫法 函數寫法 匿名寫法也可以用於非匿名函數,不過在模塊外func1函數名無效,並且視為匿名函數 ...
  • CSS簡介 css指的是層疊樣式表(Cascading Style Sheets). CSS語法 CSS語法主要由兩個部分組成:選擇器和聲明(一條或多條聲明). 選擇器一般是自己需要改變樣式的HTML元素;每一條聲明包括屬性和屬性值,屬性和屬性值之間用冒號(: )分開,每個聲明後面用分號(;)結束. ...
  • bootstrap是一種熱門的Web前端流行框架,如果要相容PC端、手機端和響應式佈局,那他一定是我的首選。bootstrap內容很多,功能強大,其中最好入門也是很重要的就是他的柵格系統。他有四個典型類: col-xs- 對應超小設備(屏幕<768 px )手機 col-sm- 對應小型設備(屏幕> ...
  • 偶然看到一個問題:為什麼有的編程規範要求用 void 0 代替 undefined? 如果不知道這個答案的小伙伴,第一反應就要問void 0是什麼鬼? void 0 void是JavaScript的一個操作符,而void 0會返回undefined,實驗出真知,可以在瀏覽器試驗一下 可以看出,voi ...
  • 、什麼是對象:萬事萬物皆對象一切具有相同本質特征和行為的物質 或一切具有屬性和方法的事物,都稱作對象。對象具有兩個特性:屬性和方法 對象類型 存儲在堆中。 例如:var obj = { name : "jack"}var obj2 = obj ; 將obj的地址傳遞給obj2obj2.name = ...
  • 前端工作中經常遇到數字計算保留小數問題,由於不是四捨五入的方式不能使用toFixed函數,本文采用正則表達式匹配字元串的方式,解決對數字的向上或向下保留小數問題: 1、向上保留小數(只要目標小數位後有有效數字就進1,保證計算後的數值一定不小於原數值) 2、向下保留小數(目標小數位後的數字直接捨棄,保 ...
  • 一直出現這個問題,有試過重新npm安裝之類的,也試過替換文件,後來才知道原來是我在初始目錄下執行run,應該cd到該項目下在run,如圖 firsttest是我的項目名字 ...
  • 本講會對種子搜索網站的部署過程進行詳細的講解。 網站演示: https://bt.mypython.me 源碼地址: https://github.com/geeeeeeeek/bt 項目部署過程 系統要求:ubuntu 16.04(或以上) 環境搭建和配置,必須嚴格按照以下步驟來安裝部署!如有問題 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...