2016-03-21 40 views
0

注意:整個問題的依據是一個問題是語法錯誤的情況;實際上在傳遞'this'時沒有任何問題。這個問題應該關閉。在通過函數傳遞this時,我不能訪問'this'的屬性嗎?

例如,下面的工作:

$('.base-icons').click(function() { 
    selectedIcon($(this).attr("src").split(/\/(\/*)/)); 
}); 

var selectedIcon = function(myObj) { 
    console.log(myObj); 
}; 

並打印字符串縮短預期。後續不起作用

$('.base-icons').click(function() { 
    selectedIcon(this); 
}); 

var selectedIcon = function(myObj) { 
    console.log($(myObj).attr("src").split(/\/(\/*)/)[6]); 
}; 

它打印undefined。爲什麼?謝謝。

+0

@JeremyBanks你確定嗎? http://stackoverflow.com/a/261682/5137782 – 8protons

+0

_「例如,以下工作:'selectedIcon($(this).attr(」src「)。split(/ \ /(\ /!*)/ )[0126] var selectedIcon = function(myObj){ console.log(myObj) }'「_你可以創建一個stacksnippets來演示嗎? – guest271314

+0

@Ramanlfc然而我做了很多次...... – 8protons

回答

1

例如,下面的工作:

selectedIcon($(this).attr("src").split(/\/(\/!*)/)[6]) 

var selectedIcon = function(myObj) { 
    console.log(myObj) 
} 

並打印字符串縮短預期。以下不起作用:

selectedIcon(this) 

var selectedIcon = function(myObj) { 
    console.log($(myObj).attr("src").split(/\/(\/!*)/)[6]) 
} 

因爲它打印未定義。爲什麼?謝謝。

selectedIconjavascript在問叫,導致在問題一TypeError

兩個例子都應該返回一個錯誤是undefined

Uncaught TypeError: selectedIcon is not a function 

window.onerror = function(e) { 
 
    console.info(e); 
 
    alert(e); 
 
} 
 

 
selectedIcon("abc"); 
 

 
var selectedIcon = function (myObj) { 
 
    alert(myObj) 
 
}

+0

爲什麼不會返回錯誤?我在定義之前調用這些函數。 https://jsfiddle.net/j1t9mvur/9/ – 8protons

+0

@ 8protons _「爲什麼這不會返回錯誤?我在定義這些函數之前調用了這些函數。」_因爲您沒有在定義之前調用這些函數https://jsfiddle.net/j1t9mvur/9/。例如,如果您將'.click()'鏈接到'.click(處理程序)',將在'console'處記錄一個錯誤https://jsfiddle.net/j1t9mvur/10/ – guest271314

+0

是因爲發生了jQuery點擊定義之後? – 8protons

0

是,路過this通過功能時,您可以訪問的this屬性。

0

您可以像這樣訪問它的屬性。

$(this).attr("href");

相關問題