Обратите внимание, что ниже следует опасный, грязный, грязный, взлом M $ -уровня. Я полностью осознаю это, но он (теоретически) делает то, что хочет @Neal. (Я немного напуган, чтобы даже опубликовать это, и я полностью ожидаю понижения голосов)
var i, w = window.opener;
for (i in w)
{
if (w.hasOwnProperty(i) && !window.hasOwnProperty(i) && typeof w[i] === 'function')
{
window[i] = w[i];
}
}
В свете проблем с областью применения я решил, что мы должны использовать .bind
. У MDN Entry для Function.bind есть шайба, которая будет необходима для некоторых браузеров.
Обратите внимание, что перед использованием .bind
код должен проверить, является ли свойство функцией. Я сделал это вместе с проверками hasOwnProperty
, но если вы хотите передать значения и функции, вы можете сделать это в своем собственном операторе if
.
var i, w = window.opener;
for (i in w)
{
if (w.hasOwnProperty(i) && !window.hasOwnProperty(i) && typeof w[i] === 'function')
{
window[i] = w[i].bind(window);
}
}