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的相關函數:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.作用域
其他語言的作用域 ==》代碼塊;
python的作用域 ==》 函數;
JavaScript的作用域 ==》函數;
要點:
- JavaScript以函數為作用域。
- 函數的作用域在函數未被調用之前已經建立。
- 函數的作用域在作用域鏈中,並且也是在調用之前建立。
- 函數內的局部變數提前聲明。
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類方法,會將所有對象的相同方法統一存放於某個地區,方便對象的調用。
格式如上述代碼所示。