日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Javascript 笔记与总结(1-4)this

發布時間:2024/9/5 java 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javascript 笔记与总结(1-4)this 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

js 中函數的 4 種調用方式:

① 作為普通函數來調用,this 的值指向 window,準確地說,this 為 null,被解釋成為 window。在 ECMAScript5 標準中,如果 this 為 null,則解釋成 undefined

<script> function t(){this.x = 'hello'; } t(); alert(window.x); </script>

彈出:hello

?

② a.作為對象的方法來調用,this 指向方法的調用者,即該對象

<script> var obj = {x:'hello',y:'world',t:function(){alert(this.x)}}; obj.t(); </script>

彈出:hello

?

b.

<script> var obj = {x:'hello',y:'world',t:function(){alert(this.x)}};var dog = {x:'wang'}; dog.t = obj.t; dog.t(); </script>

彈出:wang

作為方法調用時,this 指向其調用那一刻的調用者,即母體對象,不管被調用函數,聲明時屬于方法還是函數

?

c.

<script> var obj = {x:'hello',y:'world',t:function(){alert(this.x)}};var dog = {x:'wang'}; dog.t = obj.t; dog.t();show = function(){alert('show '+this.x); } dog.t = show; dog.t(); </script>

?

d.

<script> var obj = {x:'hello',y:'world',t:function(){alert(this.x)}};var dog = {x:'wang'}; dog.t = obj.t; dog.t();show = function(){alert('show '+this.x); } dog.t = show; dog.t(); </script>

彈出:show wang

?

③ 作為構造函數調用時

js 中沒有類的概念,創建對象使用構造函數來完成,或者直接用 json 格式{} 來寫對象

<script> function Dog(name,age){this.name = name;this.age = age;this.bark = function(){alert(this.name);} } var dog = new Dog('妞妞',2); dog.bark(); </script>

彈出:妞妞

new Dog 發生了一下幾個步驟:

a. 系統創建空對象{},(空對象 construct 屬性指向 Dog 函數)

b. 把函數的 this 指向該空對象

c. 執行該函數

d. 返回該對象

?

例:

<script> function Robit(){this.name = '瓦力';return 'wali'; } var robit = new Robit(); console.log(robit); </script>

這段代碼將輸出?

答案:

Robit {name: "瓦力"}

輸出的是 Robit 對象,因為函數作為構造函數運行時,return 的值是忽略的,依然返回對象(return 無意義)。

?

?

④ 函數通過 call,apply 調用

語法格式:函數.call(對象,參數1,參數2...參數n);

<script> function t(num){alert('我的年齡是 '+this.age);alert('雖然我看起來像 '+(this.age+num)); } var human = {name:'迭戈.科斯塔',age:27}; human.t = t; human.t(10); </script>

彈出:我的年齡是 27

彈出:雖然我看起來像 28

?

接下來,不把 t 賦為 human 的屬性,也能把 this 指向 human

<script> function t(num){alert('我的年齡是 '+this.age);alert('雖然我看起來像 '+(this.age+num)); }var giroud = {name:'Giroud',age:28}; t.call(giroud,-5); </script>

彈出:我的年齡是 28

彈出:雖然我看起來像 23

【分析】:

fn.call(對象,參數1,參數2...參數n);

運行如下:

a. fn 函數中的 this 指向對象 obj

b. 運行 fn(參數1,參數2...參數n)

?

轉載于:https://www.cnblogs.com/dee0912/p/4430658.html

總結

以上是生活随笔為你收集整理的Javascript 笔记与总结(1-4)this的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。