Я не вполне следую вашей конечной цели, поэтому некоторая теория надеется, что она поможет вам добраться:
Когда вы вызываете функцию через свойство объекта (то есть через пунктир)нотация, или []
нотация), this
в вызове функции будет ссылкой на объект.Поэтому, когда вы звоните
singleEntry.editContent.accept(tinyMCE.get('editContentTa').getContent());
... в рамках этого звонка, this
будет ссылаться на singleEntry.editContent
.
Если вы хотите, чтобы this
ссылался на что-то еще, вы можетеиспользуйте call
:
singleEntry.editContent.accept.call(thisObj, tinyMCE.get('editContentTa').getContent());
// ^^^^^^^^^^^^^
... где thisObj
- это любой объект, который вы хотите, чтобы функция видела как this
во время вызова.Подробнее здесь: Мифические методы
call
- это свойство всех (реальных) функций JavaScript, и оно специально предназначено для упрощения вызова функции иустановить, что this
должно быть (что такое context ) во время вызова.Также есть apply
, который делает то же самое, но принимает аргументы для передачи функции как массив, а не как дискретные аргументы.Например, эти два вызова идентичны:
// Using `call`
singleEntry.editContent.accept.call(thisObj, tinyMCE.get('editContentTa').getContent());
// Using `apply`
singleEntry.editContent.accept.call(thisObj, [tinyMCE.get('editContentTa').getContent()]);
// Note the `[]` -----^
Все это стало возможным, потому что в JavaScript this
полностью определяется как функция вызывается , а не где это определено - я думаю, что вы это знаете, основываясь на вашем вопросе, но все равно стоит отметить.