国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript下動態this與動態綁定實例代碼

2024-05-06 14:11:58
字體:
來源:轉載
供稿:網友

那么函數就是被掰成兩部分儲存于對象,一是其函數名(鍵),一是函數體(值),那么函數中的this一般都指向函數所在的對象。但這是一般而已,在全局調用函數時,我們并沒有看到調用者,或者這時就是window。不過,函數聲明后,其實并沒有綁定到任何對象,因此我們可以用call apply這些方法設置調用者。

一個簡單的例子:
[script]
<script>
window.name = "window";
var run = function() {
alert("My name is " + this.name);
}
run();
</script>
[/html]
這里你不能說run是作為window的一個屬性而存在,但它的確是被window屬性調用了。實質上大多數暴露在最上層的東西都則window接管了。在它們需要調用時被拷貝到window這個對象上(不過在IE中window并不繼承對象),于是有了window['xxx']與window.xxx性能上的差異。這是內部實現,不深究了。
另一個例子,綁定到一個明確的對象上

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
答案顯然易見,this總是為它的調用者。但如果復雜一點呢?

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
盡管它是定義在object內部,盡管它是定義run函數內部,但它彈出的既不是object也不是run,因為它既不是object的屬性也不是run的屬性。它松散在存在于run的作用域用,不能被前兩者調用,就只有被window拯救。window等原生對象浸透于在所有腳本的內部,無孔不入,只要哪里需要到它做貢獻的地方,它都義不容辭。但通常我們不需要它來幫倒忙,這就需要奠出call與apply兩大利器了。

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
call與apply的區別在于第一個參數以后的參數的形式,call是一個個,aplly則都放到一個數組上,在參數不明確的情況,我們可以借助arguments與Array.slice輕松搞定。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 微山县| 吉隆县| 西安市| 南充市| 宁河县| 寻乌县| 湟源县| 青龙| 仙游县| 拉萨市| 郓城县| 成安县| 舞钢市| 延安市| 吉木乃县| 札达县| 沈丘县| 乌鲁木齐市| 绥德县| 赞皇县| 龙井市| 池州市| 密云县| 民和| 开江县| 英超| 同仁县| 漯河市| 吕梁市| 张掖市| 剑阁县| 奉新县| 扎兰屯市| 仁寿县| 称多县| 酉阳| 望谟县| 马尔康县| 轮台县| 临沧市| 汶川县|