javaScript學習隨筆

一、<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對象

window對象是BOM的頂層對象,能超控窗口大小、位置等等。
location對象用於獲取URL以及參數等信息。經常使用屬性爲:
    host        "www.baidu.com:80"
    hostname    "www.baidu.com"
    post        "80"
    href        "https://www.baidu.com"
    search        "?q=javascript"
navigator對象用於檢測插件及註冊表。
history用於查看訪問歷史。 
3八、事件冒泡模型比較適用。
3九、事件處理程序以on開頭,如:onclick。
相關文章
相關標籤/搜索