Re: [問題] 練習javascript的時候 遇到困難了(物件)
※ 引述《coldollsheep (加油加油^^)》之銘言:
: 恩首先先貼一個很簡單的 class
: B = function()
: {
: this.b = function()
: {
: console.log( 'B b' ) ;
: }
: }
: var b = new B();
: b.b();
: 這是可以work的,結果是B b
: 然後,陰錯陽差亂測試之下(反正我真的不懂),我測試了下面狀況
: B = function()
: {
: this.b = function()
: {
: console.log( 'B b' ) ;
: }
: }
: B();
: b();
: 這段會成功執行讓我有點疑惑
: 到底那個this變成誰了? 為什麼可以執行b()
: 我問了我朋友,我們測試了另外一段code
當一個函式不依附一個物件、不被bind、不被new的情況下被執行
裡面的this就會指到global物件
(如果是在瀏覽器裡執行的話,global物件就是window)
也就是說,B被執行之後,你會多一個廣域變數叫b
b的內容會是console.log('B b')
因此你在之後直接執行b()是可以成功的
: B = function()
: {
: this.b = function()
: {
: console.log( 'inside b' ) ;
: }
: }
: b = function()
: {
: console.log( 'outside b' ) ;
: }
: B();
: b();
: 結果是 inside b
因為當你把console.log('outside b')的function指派給廣域變數b後
B被執行了,再次把console.log('inside b')的funciton指派給this.b(同樣是廣域變數b)
因此b的內容被覆蓋
執行後的結果就是inside b
: 還滿想知道怎麼回事的
: 懇請大大 隨口指點一下
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.34.206.30
※ 編輯: mrbigmouth 來自: 1.34.206.30 (03/22 13:04)
→
03/22 13:05, , 1F
03/22 13:05, 1F
推
03/22 13:38, , 2F
03/22 13:38, 2F
→
03/22 13:38, , 3F
03/22 13:38, 3F
→
03/22 13:39, , 4F
03/22 13:39, 4F
推
03/22 13:42, , 5F
03/22 13:42, 5F
推
03/22 13:47, , 6F
03/22 13:47, 6F
→
03/22 14:00, , 7F
03/22 14:00, 7F
推
03/22 17:58, , 8F
03/22 17:58, 8F
→
03/22 17:59, , 9F
03/22 17:59, 9F
→
03/22 17:59, , 10F
03/22 17:59, 10F
→
03/22 18:00, , 11F
03/22 18:00, 11F
→
03/22 18:01, , 12F
03/22 18:01, 12F
→
03/22 18:01, , 13F
03/22 18:01, 13F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章