天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

關(guān)于javascript函數(shù)的幾個話題

1.函數(shù)對象和函數(shù)指針
函數(shù)實際上是一個可執(zhí)行的對象,任何訪問函數(shù)對象的方式都是函數(shù)指針。
不論 使用哪一種方式
var a=new Function(...);
function a(...){...}
var a=function(...){...}
得到的函數(shù)名a都是一個指向函數(shù)的指針 可以用var b=a;來創(chuàng)建另外一個指向它的指針。
但是 它們指向同一段函數(shù)。因為函數(shù)名是一個指針,所以能夠被作為參數(shù)傳遞。
()運算符作用于一個函數(shù)指針將會執(zhí)行它所在的函數(shù),當然還會傳入?yún)?shù)。


2.函數(shù)直接量(函數(shù)文字量)
實際上函數(shù)直接量這個說法并不準確 但可以通俗地解釋一些用法
125 "good"是都是直接量 可以在代碼中不通過變量名使用 函數(shù)也有類似的用法
function(){...} 代表了一個函數(shù)指針的值 它指向function(){...}定義的函數(shù)
那么 (function(){...})() 就執(zhí)行了這個函數(shù) a=function(){...}就創(chuàng)建了這個指針的一個副本

3.函數(shù)對象的成員 
函數(shù)對象繼承自object對象 它還有自己的屬性和方法
查到的就這么多 來自vs2005的提示
f.apply(thisValue,argArray);//在thisValue對象上執(zhí)行 參數(shù)由數(shù)組argArray提供
f.call(thisValue);//在thisValue對象上執(zhí)行,不是沒有參數(shù),要用參數(shù)的話直接跟在thisValue后面
f.prototype; //原型 很常見 前面也用過 不多說了。 
f.length;//參數(shù)列表的長度

f.hasOwnProperty(propertyName);//繼承自O(shè)bject的方法,檢查對象是否有指定屬性
f.propertyIsEnumerable(propertyName);//繼承自O(shè)bject的方法,檢查指定屬性是否能被for in枚舉出來 (除了firefox下的prototype 其他屬性都不能被枚舉)
f.toLocaleString();//繼承自O(shè)bject的方法,轉(zhuǎn)換為字符串
f.toString();//繼承自O(shè)bject的方法,轉(zhuǎn)換為字符串 在alert document.write等時自動調(diào)用
f.valueOf();//繼承自O(shè)bject的方法,求值,對象做算術(shù)運算時自動調(diào)用,如果默認就是toString 

3.Javascript函數(shù)能訪問的范圍
Javascript函數(shù)究竟能訪問那些資源? 包括三部分:函數(shù)的作用域、this指針、參數(shù)除此之外函數(shù)無法訪問任何資源。
如果要比較清晰地理解函數(shù) 應(yīng)當想像函數(shù)有三組參數(shù):
第一組是作用域 在定義時確定 是函數(shù)定義位置決定的 暫稱為外作用域 在函數(shù)定義處可以訪問的變量和函數(shù)在函數(shù)中也可以訪問,不論調(diào)用這個函數(shù)的指針被傳遞到哪里
第二組是this 在函數(shù)被調(diào)用時確定 
  如果函數(shù)是用()調(diào)用的  它默認指向函數(shù)所屬的對象:如果函數(shù)是某個對象的成員 那么this指向這個對象,否則指向全局對象(大多數(shù)時候是window)
  如果函數(shù)是用apply或者call調(diào)用的 this指向指定的thisvalue
第三組是參數(shù) 在函數(shù)被調(diào)用時確定 在參數(shù)列表中的參數(shù)可以直接訪問 不再參數(shù)列表中的參數(shù)可以用arguments訪問

4.函數(shù)作用域的生成與訪問
函數(shù)除了能夠訪問一個作用域之外 每次執(zhí)行 會生成一個新的作用域 (閉包)
此作用域之外的代碼無法訪問這一作用域的變量 此作用域內(nèi)的代碼可以訪問這個作用域以及此函數(shù)定義時的作用域。

跨作用域的訪問只能通過指針。js中object是指針類型。
想要獲得指向某個作用域的指針 必須從這個作用域中把指針傳遞出來:即把此作用域中的指針類型變量的值賦給其他作用域的變量
前面所說一個函數(shù)中能夠訪問的資源包括 this 外作用域 參數(shù) 所以可以通過這種方式訪問其他作用域中的變量。
一個很bt的例子

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
最后這個例子太BT了,實際上,雖然js的function有這樣的能力,但是在使用時我們一般會有一個限制,就是閉包中訪問閉包外變量時,不應(yīng)當采用有“副作用”的表達式,例如++、--或者賦值,也就是說限制閉包訪問外部域的內(nèi)容僅限于“讀”和“表達式計算”,可以修改外部變量實際引用的對象的值,但是不要在閉包內(nèi)修改外部變量本身的值。所以下面的例子
function c(a){
    return function(x)
    {
        return x+a++;
    }
}
通常是合法但不合理的,因為這是一個有副作用的閉包。在程序邏輯復雜的情況下這很容易導致混亂。因為這個閉包在什么時候調(diào)用是完全不確定的。這個閉包的存在使得這個函數(shù)每次調(diào)用的返回值完全不同,即使采用的是同一個參數(shù)。這顯然違背了functional“公式化”的基本原則。

不過,實際上上面這種函數(shù)倒有一個特殊用途,用來生成某些特殊的計數(shù)器 :)
所以限制也不是絕對的...

JavaScript技術(shù)關(guān)于javascript函數(shù)的幾個話題,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 99C视频色欲在线 | 白百合在线观看 | 诱受H嗯啊巨肉各种play | 波多久久亚洲精品AV无码 | 国产爱豆果冻传媒在线观看视频 | 约艺术院校96年清纯白嫩 | 97成人碰碰在线人妻少妇 | 伊人久久网站 | 国产精品ⅴ视频免费观看 | 亚洲精品另类有吗中文字幕 | 欧美最猛黑人AAAAA片 | 久久精品视频在线看 | 久久精品国产久精国产果冻传媒 | 国产亚洲精品精品国产亚洲综合 | 色窝窝777欧美午夜精品影院 | 亚洲成人网导航 | 精品久久电影网 | 亚洲国产精品嫩草影院 | 虫族bl文全肉高h | 免费视频网站嗯啊轻点 | 大屁股国产白浆一二区 | 丰满饥渴老太性hd | 亚洲视频免费在线观看 | 欲插爽乱浪伦骨 | 超h高h肉h文教室生理课 | 毛片免费观看的视频 | 被窝国产理论一二三影院 | 午夜噜噜噜私人影院在线播放 | 久久全国免费观看视频 | 乌克兰成人性色生活片 | 丰满女朋友在线观看中文 | 高清无码中文字幕在线观看视频 | 99视频在线看观免费 | 大相蕉伊人狼人久草av | 印度学生xxxxx性14一16 | 大胸美女被c | 久久伊人天堂视频网 | 久久无码AV亚洲精品色午夜麻豆 | cctv官网| 国产色婷亚洲99精品AV在 | 自拍视频亚洲综合在线精品 |