Предпосылка: как должна выглядеть правильная производительность charCodeAt (i: Int):
"test".charCodeAt(0)
116
"test".charCodeAt(1)
101
"test".charCodeAt(2)
115
"test".charCodeAt(3)
116
"test".charCodeAt(4)
NaN
и вот что происходит при использовании call или apply:
>"test".charCodeAt.apply(this, [0,1,2,3])
91
//that's fine, except for 91!
"test".charCodeAt.call(this,0)
91
"test".charCodeAt.call(this,4)
101
"test".charCodeAt.call(this,5)
99
"test".charCodeAt.call(this,50)
NaN
"test".charCodeAt.call(this,6)
116
"test".charCodeAt.call(this,8)
68
x = "test".charCodeAt
function charCodeAt() { [native code] }
x.call(x,0)
102
Аргументы передаются правильно.Он касается объема, который передается с первым аргументом вызова или применения и изменяет значениеOf из указателя this .
Я не совсем уверен, что произошло, и не смогвоспроизведите поведение в новом окне консоли (Chrome v15):
x = "test"
"test"
"".charCodeAt.call(this.x,0)
116
OK.
Что касается вопроса: когда область действия не указана с помощью this.x , а только x - в этом примере может странное поведение привести к разрешению области действия интерпретатора JS?Кто-нибудь сталкивался с подобными случаями со странными конфликтами в области видимости?