首先看一個頁面常用的js代碼骨架
<!DOCTYPE html> |
代碼分析: 一、立即執行函數表達式IIFE IIFE immediately-invoked function expression 寫法一(function($){...})(jQuery); 寫法二(function($){...}(jQuery)); 其作用相當於 var a = function($){...}; a(jQuery); 讓編寫的代碼能立即執行。
二、function(){} 在javascript中定義類函數都是funciton。 三、Obj.prototype類原型 可以像上面那樣寫在一起,這叫完全重寫; 也可以分開寫,叫做部分重寫,寫法如下: Obj.prototype.a = "我是字符串"; Obj.prototype.b = { name:"我是對象" }; Obj.prototype.c = ['我是','數組']; Obj.prototype.d= function(){ return ""; 我是函數 }; 四、$(document).ready(function(){...}); 因爲html文檔是順序執行的所以如果代碼是寫在所有文檔元素之後這個$(document).ready()可以省略 五、call 函數名.call(調用者, 參數列表); //調用者不能省略,定義了這個函數的作用哉
六、js代碼前的分號;或加號(+)是爲了避免前一個js文檔如果沒有用分號結尾造成的文檔錯誤。 七、constructor構造函數 構造函數:是一種特殊的方法,主要用來在創建對象時初始化對象,即爲對象成員變量賦初始值。總與new運算符一起使用在創建對象的語句中,特別的一個類可以有多個構造函數,可根據其參數個數的不同或參數類型的不同來區分它們,即構造函數的重載。 在JavaScript中,對象的constructor屬性用於返回創建該對象的函數引用。 每個具有原型的對象都會自動獲得constructor屬性。除了arguments、Enumerator、Error、Global、Math、RegExp、Regular Rxpression等一些特殊對象之外,其他所有的JavaScript內置對象都具備constructor屬性。例如:Array、Boolean、Date、Function、Number、Object、String等。所有主流瀏覽器均支持該屬性。 當prototype完全重寫的時候(就是Obj.prototype = {}的形式),這時prototype的構造器是Object,宿主構造器不直接具備prototype的屬性,也正因如此,在prototype聲明之前已經創建好的對象,不能使用prototype屬性——完全重寫將原來的實例和prototype切斷了。 prototype的部分重寫,是在原來的基礎上新增了屬性或者方法,而完全重寫則是推翻原有的,重新開始,那麼,如果即想把所有新增方法都寫在一起,又要保留原有的屬性的時候,就需要用到“constructor:類名稱”這句話把構造器指回來。
|