javascript - функция с точечной нотацией, использующая конкатенацию и значение массива - PullRequest
1 голос
/ 19 мая 2011
<script src="modernizr-1.7.min.js"></script>    
var modernizr_fields = new Array("canvas","video","webgl");     
for (i=0; i < modernizr_fields.length; i++) {
    document.writeln(modernizr_fields[i] + " ");    
    if (Modernizr + "." + modernizr_fields[i])
        document.writeln("true");   
    else
        document.writeln("false");
    document.writeln("<br>");       
}

Я знаю, что проблема в этой строке: "if (Modernizr +". "+ Modernizr_fields [i])", поскольку она всегда оценивается как "true"

Пожалуйста, помогите с моим синтаксисом.

1 Ответ

1 голос
/ 19 мая 2011

Вам нужно:

if (Modernizr[modernizr_fields[i]]) {
     ...
}

Формат obj.field работает только с литеральными именами полей, если вместо field используется переменная, которую вы используете obj[field]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...