使用方法一: 復制代碼 代碼如下: var foo01 = function() //or fun01 = functio " /> 7777精品伊人久久久大香线蕉超级流畅,av自拍一区,欧美专区一二三

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

function, new function, new Function之間的區別

函數是JavaScript中很重要的一個語言元素,并且提供了一個function關鍵字和內置對象Function,下面是其可能的用法和它們之間的關系。

    使用方法一: 
復制代碼 代碼如下:
 var foo01 = function() //or fun01 = function() 
 { 
     var temp = 100; 
     this.temp = 200; 
     return temp + this.temp; 
 } 

 alert(typeof(foo01)); 
 alert(foo01()); 
   運行結果:
 function
 300    最普通的function使用方式,定一個JavaScript函數。兩種寫法表現出來的運行效果完全相同,唯一的卻別是后一種寫法有較高的初始化優先級。在大擴號內的變量作用域中,this指代foo01的所有者,即window對象。

    使用方法二: 
 復制代碼 代碼如下:
var foo02 = new function() 
 { 
     var temp = 100; 
     this.temp = 200; 
     return temp + this.temp; 
 } 

 alert(typeof(foo02)); 
 alert(foo02.constructor());    
運行結果:  object
 300    這是一個比較puzzle的function的使用方式,好像是定一個函數。但是實際上這是定一個JavaScript中的用戶自定義對象,不過這里是個匿名類。這個用法和函數本身的使用基本沒有任何關系,在大擴號中會構建一個變量作用域,this指代這個作用域本身。

    使用方法三:  復制代碼 代碼如下:
var foo3 = new Function('var temp = 100; this.temp = 200; return temp + this.temp;'); 

 alert(typeof(foo3)); 
 alert(foo3());    
運行結果:  function
 300    使用系統內置函數對象來構建一個函數,這和方法一中的第一種方式在效果和初始化優先級上都完全相同,就是函數體以字符串形式給出。

    使用方法四: 
 復制代碼 代碼如下:
var foo4 = Function('var temp = 100; this.temp = 200; return temp + this.temp;'); 

 alert(typeof(foo4)); 
 alert(foo4());    
運行結果:
function
300    這個方式是不常使用的,效果和方法三一樣,不過不清楚不用new來生成有沒有什么副作用,這也體現了JavaScript一個最大的特性:靈活!能省就省。

    關于函數初始化優先級這個問題,可以參看:"JS類定義原型方法的兩種實現的區別"的回復。

JavaScript技術function, new function, new Function之間的區別,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 茶陵县| 祥云县| 霍林郭勒市| 沐川县| 卢湾区| 德钦县| 项城市| 黄平县| 慈利县| 泽州县| 利川市| 阜平县| 清远市| 紫阳县| 呼伦贝尔市| 晋宁县| 博乐市| 霍邱县| 澄城县| 衢州市| 洛宁县| 安阳市| 泰安市| 岳池县| 景德镇市| 中阳县| 青浦区| 克拉玛依市| 石景山区| 图木舒克市| 西贡区| 山丹县| 玉溪市| 桐乡市| 龙州县| 乌兰县| 清涧县| 怀远县| 辽阳市| 临江市| 崇文区|