JavaScript簡介javascript
JavaScript是基於對象和事件驅動的腳本語言,主要應用在客戶端。java
特色:編程
JavaScript與Java不一樣數組
JavaScript與HTML的結合方式瀏覽器
想要將其餘代碼融入到HTML中,都是以標籤的形式。安全
注意:若是<script>標籤中使用src屬性,那麼該標籤中存放的JavaScript代碼不會被執行。因此一般導入js文件都是用單獨的<script>來完成。函數
JavaScript語法學習
每一種語言都有本身的語法規則,JS語法與Java很像,因此學習起來比較容易。JS中也同樣有變量,語句,函數,數組等常見語言組成元素。this
經過關鍵字var來定義,弱類型便是不用指定具體的數據類型。spa
例如:var x = 3; x = "hello";
注:JS中特殊常量值:undefined。當變量沒有初始化就被使用,該變量的值就是undefined(未定義)。JS中只有字符串沒有字符,所以""、''的做用是相同的。
注意:JavaScript的語句在結尾處是能夠不用分號結束的,非嚴謹語言的特色。但爲了符合編程規範,須要像Java同樣定義結束符。並且有些狀況是必須寫分號的,如:var x = 3; var y = 5 若是兩條語句寫在同一行,就須要分號隔開。
算術運算符(+ - * / % ++ --)、賦值運算符、比較運算符、邏輯運算符、位運算符、三元運算符。
JavaScript中的運算符和Java大體相同。只是運算過程當中須要注意幾點:
var x = 3; var y = "123"; var z = false; typeof(x); // number typeof(y); // string typeof(z); // boolean;
順序結構、判斷結構(if.else)、選擇結構(switch)、循環結構、其餘語句(如with:簡化對象調用內容的書寫)。
頁面中輸出九九乘法表:
<script type="text/javascript"> document.write("<table width='60%'>") for(var i = 1; i < 10; i++) { document.write("<tr>"); for(var j = 1; j <= i; j++) { document.write("<td>" + j + "*" + i + "=" + i*j + "</td>"); } document.write("</tr>"); } document.write("</table>"); </script>
js中數組定義的兩種方式:
特色:長度是可變的。元素的類型是任意的。建議在使用數組時存儲同一類型的元素,操做起來較爲方便。
經過指定的關鍵字function來定義。
function 函數名(參數列表){ 函數體; return 返回值; // 可省略 }
例如:
function add(a, b) { return a+b; }
函數的一些細節:
var add = function(a, b) { return a + b; } alert(add(3, 4));
var add = new Function("x, y", "var sum = x+y; return sum"); alert(add(3, 4));
好比,爲String對象添加去除兩邊空格的新功能:trim。
String.prototype.trim = function(){ var start = 0; var end = this.length-1; for(var i = 0; i < this.length; i++) { if(this.charAt(i) == " ") start = i+1; else break; } for(i = end; i >= 0; i--) { if(this.charAt(i) == " ") end = i-1; else break; } return start > end ? "" : this.substring(start, end+1); }
這裏再介紹一下如何用JS自定義對象。
若是想要自定義對象,應該先對對象進行描述。JS是基於對象,不是面向對象的。不具有描述事物的能力。若是咱們還想按照面向對象的思想編寫JS,就要先描述。在JS中,能夠用函數來模擬面向對象中的描述。
<script type="text/javascript"> // 用JS來描述人 function Person(){ // 至關於構造器 alert('one person was constructed'); } // 經過描述進行對象的創建 new var p = new Person(); // 動態給p對象添加屬性。直接使用p.屬性名便可 p.name = 'zhangsan'; p.age = 10; // 若是定義的p對象的屬性賦值爲一個函數,便是給p對象添加一個方法 p.show = function(){ alert('show: ' + this.name + ' : ' + this.age); } p.show(); /* 下面語句的輸出:能夠看到get和set方法是默認的 name_zhangsan age_10 setName_function (name){ this.name = name; } getName_function (name){ return this.name; } show_function (){ alert('show: ' + this.name + ' : ' + this.age); } */ var x; for(x in p) println(x + "_" + p[x]); /* println方法: src="JSExample.js" JSExample.js: function println(value){ document.write(value+"<br/>"); } */ //-------------------------------------------------------- // JS庫中: var obj = new Object(); obj.name = 'god'; alert("obj.name:" + obj.name); //-------------------------------------------------------- // 另外一種描述人的方法 function Person(name, age){ // 給Person對象添加兩個屬性name和age this.name = name; this.age = age; this.setName = function(name){ this.name = name; } this.getName = function(name){ return this.name; } } var person = new Person('O(∩_∩)O', 12); alert(person.getName()); //-------------------------------------------------------- // 直接使用{}來定義一個實體 var per = { // 用鍵值對的方式定義成員 "name":"lisi", "age":20, "getName":function(){ return this.name; }, "setName":function(name){ this.name = name; } } // 對象調用成員的兩種方式:對象.屬性名 對象["屬性名"] alert(per["age"]); // per.age </script>