apply()を使用して関数を呼び出そうとしていますが、ブラケット表記でvarを渡すとそれ以上は機能しません。なぜこれはうまくいかないのですか?おかげJavascript apply()がブラケット表記でvarと一緒に動作しない
window.video['play'] = OK window.video.play = OK obj[p[i]] = not OK <= something like this I'd like to use
var obj = window;
var prop = 'video.play';
var p = prop.split('.');
for (var i = 0; i < p.length; i++) {
obj = obj[p[i]];
}
var orig = obj; // problem here with obj: window.video['play'] = OK, but obj[p[i]] = not OK
obj = function() {
var ar = Array.prototype.slice.call(arguments);
console.log(ar); // not work!
orig.apply(this, ar);
};
はほぼ同じですが、この作品:
var orig = window.video.play;
window.video.play = function() {
var ar = Array.prototype.slice.call(arguments);
console.log(ar); // work!
orig.apply(this, ar);
};
obj = obj [p [i]]; ' – Dekel
@Dekel:それは正しいことだと思う。 –
正確には 'console.log(ar); //うまくいかない! 'mean? –