一、<script>標籤位置:爲加強體驗,避免用戶較長時間看到空白窗口,<script>元素放在<body>元素中。javascript
二、js中區分大小寫。java
三、js中變量第一個字符能夠爲字母、下劃線、和美圓符號$正則表達式
四、js中的變量是鬆散類型的,能夠保持任何類型的變量。例如:var message = "hi";express
五、定義變量時,不加var,就是建立了一個全局變量。數組
六、js的五種數據類型:undefined、null、boolean、number、string。函數
七、用typeof能夠查看對象類型,注意typeof是操做符而不是函數。post
八、當表示八進制時,前導值爲0,若數值中出現大於7的數字,則自動轉換爲十進制解析。this
九、數值轉換:number可用於任何數據類型,parseInt、parseFloat專門把字符串轉換成數值。spa
十、parseInt用於轉換整數,能夠指定進制。例:var num = parseInt("oxAF",16);prototype
十一、paraseFloat不可指定進制。
十二、JS中函數用function聲明。
1三、JS的參數實際上能夠理解爲一個數組,調用時,對參數的傳遞並不嚴格校驗。例如定義的函數有兩個參數,調用時能夠傳一個或者三個。
由於JS的參數容許在函數內用arguments進行調用。
例如:arguments[0]、arguments[1]。
1四、JS不支持重載,由於他並不校驗參數個數、類型等信息。
1五、String是JS的基本數據類型。
五種基本類型:
Undefined、Null、Boolean、Number、String。
JS中,只有這五種基本類型是值訪問,其餘的引用類型是址訪問。
1六、訪問變量有按值和按址兩種方式,可是函數的參數只有按值傳遞。
1七、在JS中,非基本類型的複製是指向同一內存區域。函數的參數若是是非基本類型的,至關於複製。
1八、函數定義時,參數也不要加類型。
1九、 with 語句能夠方便地用來引用某個特定對象中已有的屬性,可是不能用來給對象添加屬性。要給對象建立新的屬性,必須明確地引用該對象。
20、在if、for代碼段中定義的變量,在if、for的代碼段執行完後仍然生效,直到當前函數結束纔會失效。
2一、基本類型的在內存中佔據固定大小的空間,存放在棧中。引用類型的值是對象,存放在堆中。
2二、用點號和方括號均可以訪問對象的屬性,可是用方括號能夠經過變量來訪問屬性。
例:
var propertyName = "name"; alert(person[propertyName]); //「WuYangChun」
2三、一般,除非必須使用變量來訪問屬性,不然通常用點號表示法。
2四、在JS中,數組的長度屬性並非只讀的,能夠經過設置長度刪除數組尾部的數據。也能夠經過length向尾部插入值。
2五、用數組實現棧的方法,用push(),pop()方法插入值、移除值。
2六、用push()和shift()結合實現隊列方法。
2七、正則表達式的形式:
var expression = /pattern/ flags;
其中flags的取值能夠爲如下一個或多個:
g:全局模式。
i:表示不區分大小寫。
m:多行模式。
2八、正則表達式的兩種用法:
一、exec方法主要用於獲取匹配到的值
例:
var text = "cat,bat,sat,fat"; var pattern1 = /.at/g; var matchs = pattern1.exec(text); alert(matchs[0]);
二、test方法主要用於判斷是否有匹配的值
例:
var text = "cat,bat,sat,fat"; var pattern1 = /.at/g; if(pattern1.test(text)){ alert("have matching"); }
2九、 修改屬性的特性,須要用Object.defineProperty()方法。
例:
Object.defineProperty(){
對象,屬性名,特性設置
}
30、建立對象一:工廠模式實例代碼:例:
function createPerson(name,age,job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); } }
3一、建立對象二:構造函數模式代碼:例:
function Person(name,age,job){ this.name = name; this.age = age; this.job = job; this.sayName = function(){ alert(this.name); } }
3二、構造函數模式的特色:
一、沒有顯式的建立對象。
二、直接將屬性和方法賦值給this對象。
三、沒有return語句。
四、函數首字母大寫。
缺陷:內部定義的函數其實也是建立了對象,當用構造函數定義多個對象時,至關於重複新建了內部的對象,顯得沒有必要。
3三、建立對象三:原型模式代碼:例:
function Person(){} Person.prototype = { name : "WuYangChun", age : 29, job : "Software Engineer", sayName : function(){ alert(this.name); } }
3四、原型模式的特色:
解決了構造函數模式的缺陷,但全部實例在默認狀況下都有相同的屬性值。
3五、建立對象四:組合使用構造函數模式和原型模式代碼:例:(這是目前使用最廣的方法)
function Person(name,age,job){ this.name = name; this.age = age; this.job = job; this.friends = ["Shelby","Court"]; } Person.prototype = { constructor : Person, sayName : function(){ alert(this.name); } }
3六、構造函數、原型、實例的關係:
每一個構造函數都有一個原型對象,
原型對象都包含一個指向構造函數的指針,
實例都包含一個指向原型對象的內部指針。
3七、BOM對象