JavaScript-基礎

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"]與前面結果相同
            }
相關文章
相關標籤/搜索