很难描述应用程序,但基本上我需要发送'this'作为参数,而不是在函数中使用'this'可用。情况就是这样:
paragraph_element.addEventListener( "click", vFlipBP );
这是vFlipBP的一部分
/**
*vFlipBP
*/
function vFlipBP( element_or_string ) {
var previous_page_element,
previous_tag_element,
current_page_element,
select_element;
console.log( 'element_or_string ' + element_or_string );
if( typeof ( element_or_string ) === 'string' ) {
select_element = document.getElementById( element_or_string );
} else {
select_element = this;
}
.
.
.
即使这是有效的JavaScript .... jshint.com提醒“可能严格违规”的问题
我只是不喜欢警告......并且不想配置jshint.com。
我希望我的代码能够通过100%而不必进行配置。
挑剔......但我只是想要它。
答案 0 :(得分:3)
如果您必须更改您的代码,请执行以下操作:
function vFlipBP( element_or_string ) {
var previous_page_element,
previous_tag_element,
current_page_element,
select_element = this;
console.log( 'element_or_string ' + element_or_string );
if( typeof ( element_or_string ) === 'string' ) {
select_element = document.getElementById( element_or_string );
}
你所犯的错误在于从一个不那么成熟的工具(如JSHint)的“干净”报告中获得如此多的价值。在你的函数中打开“use strict”,让实际的JavaScript运行时抱怨。
编辑 - 等待我对JSHint所关注的假设可能是错误的,根据@minitech对这个问题的原始化身的回答。如果真的是JSHint担心this
可能为空,那么我认为担心警告更为愚蠢。
答案 1 :(得分:2)
在javascript中,有两种方法可以明确说明调用时this
在方法中指向的内容:apply和call。
vFlipBP.apply(objectYouWantToBeThis, [element_or_string]);
或
vFlipBP.call(objectYouWantToBeThis, element_or_string);