Date javascript
date.toString() 獲取世界時間,會提示當前時區java
var data = new Date(); alert(date.toString());
date.toLocaleString() 獲取當前時區的當前時間json
超連接不跳轉數組
1、讓js函數返回false,在click也返回false閉包
function hi(){ alert("你好") ; return false; } <a href="http://www.baidu.com" onclick="return hi();">打招呼</a>
2、將href指定成一段腳本app
<a href="javascript:hi();">打招呼</a>
數據類型函數
boolean 布爾this
number 數字spa
string 字符串prototype
Undefined 未定義
Null 空對象
Object 對象類型
Undefined類型、Null類型都是隻有一個值的數據類型,值分別爲undefined與null
null是一個object的值
查看變量的類型typeof 變量名或typeof(變量名),返回變量類型的字符串
//返回的是function alert(typeof(date)) //返回的是string alert(typeof(date()))//調用方法返回字符串
類型轉換:類型名(變量名)或parse***(變量名)
//當變量被聲明後,沒有初始化,值爲undefined
判等
雙等號==判斷值是否相等
三等號===先判斷類型是否相同,再判斷值是否相等
undefined==null true
undefined===null false
123==「123」 true
123===「123」 false
如何判斷變量是否可用?
先判斷類型是否爲undefined,再判斷值是否爲null,不然可用
isNan() 非數字判斷
alert(isNaN('123')) //false 能轉成數字的都是false alert(isNaN('abc'))
eval() 將一段字符串當作js代碼執行
應用場景:當從文本框中獲取值時,獲得的是字符串,但願那段字符串當作js執行,則使用eval()
eval('alert("abc")')
方法
使用關鍵字arguments獲取因此的參數,是一個數組
//可變參數 function sum(){ var res=0; for(var i=0;i<arguments.length;i++) { res+=argument[i]; } } sum(1,2,3,4,5);
js不支持方法重載,若是方法重名,後寫的函數會把以前的覆蓋掉
匿名函數
1、能夠將方法賦值給一個變量,這個變量表示一個方法
var fn = function(a,b){alert(a+b);}; //調用 fn(1,2);
2、定義時完成調用
(function(){})()
3、賦值給一個變量完成調用
new Function("a","b","return a+b");
閉包(主要做用是類的定義)
支持在函數內部調用函數以前聲明過的變量
做用域鏈:變量的做用域在當前函數中,及當前函數內部定義的函數中,造成了一個鏈條(缺點:會讓變量的值在內存中長期存放,沒法釋放,儘可能避免閉包的發生)
//定義一個函數say function say(name){ //返回一個函數 return function(){ //輸出name的值 alert("我是"+name) } } //調用say函數,將返回值賦值給fn var fn = say("小明"); //調用fn fn();
window.onload=function(){ var btn = document.getElementsByName("happy"); for(var i=0;i<btn.length;i++){ //逐個爲按鈕註冊點擊事件 btn[i].onclick=function(){ //正確寫法 //this.value="noHappy"; //錯誤緣由,i的閉包,當調用此方法時,因爲該方法沒有i,因此去外層方法尋找,但因爲當時已經循環完,因此i爲7,也就是說,無論點擊哪一個按鈕,執行的都是第8個(也就是i爲7)按鈕的事件 document.getElementById(i).value="noHappy"; } } }
<input type="button" name="happy" id="0" value="happy"/>
<input type="button" name="happy" id="1" value="happy"/>
<input type="button" name="happy" id="2" value="happy"/>
<input type="button" name="happy" id="3" value="happy"/>
<input type="button" name="happy" id="4" value="happy"/>
<input type="button" name="happy" id="5" value="happy"/>
<input type="button" name="happy" id="6" value="happy"/>
<input type="button" name="happy" id="7" value="happy"/>
模擬面向對象
//第一種方式 //爲類增長成員 function Person(gender){ //在類內部聲明一個Gender屬性,初始化爲gender值 this.Gender=gender; this.say=function(){ alert("我是"+this.Gender+"的"); } } //使用構造方法建立對象 var women=new Person("女"); //調用方法 person.say(); alert(typeof(women));//object alert(typeof(Person("女")));//undefined,由於Person做爲函數時,沒有返回值,因此是undefined alert(typeof(Person));//function,Person就是一個函數,類型是function //第二種方式 //爲對象增長屬性 function Person(){} var p=new Person(); p.Name="小明";//爲對象p新增了一個Name屬性 p.say=function(){ alert(p.Name); } p.say(); //新建的對象,是沒有Name屬性的,由於類Person中沒有Name屬性 var p1=new Person(); alert(p1.Name)
原型
//原型:對象的類型 function Person(){ this.Age=18; } var p = new Person(); //訪問原型,爲原型註冊數據成員,下面兩種結果同樣 p.__proto__.Name="小紅";//兩個下劃線 Person.prototype.Name="小紫";
集合
//使用[]定義數組 var arr=[1,'a',"小明"]; arr[0] //鍵值對{鍵:值} var arr2={name:"小明",age:18,gender:'男'}; arr2["name"]//將arr2認爲是集合,經過鍵訪問值 arr2.name//將arr2任務是json,經過屬性訪問值 //定義json數組 var temp=[{ name:"小明", age:17 },{ name:"小紅", age:18 },{ name:"小紫", age:18 }]; //輸出對象的name for(var item in temp){ alert(temp[item].name)//temp[item]["name"]與前面結果相同 }