JavaScript: Передача не только функции, а всего объекта с его свойствами?

function TestClass(prop) {
		if (prop) {
			parms = prop;
		}
	}

	TestClass.prototype = {
		constructor: TestClass,
		parms: 'test',
		var1: 2,

		fnc: function () {
			alert(this.var1);
		}
	}

	function fnc2(msg) {
		test = new TestClass('11');
		var myFnc = test.fnc;
		myFnc();
	}


по нажатию кнопки вызываем fnc2, где в переменную myFnc присваивается код функции объекта. Пример отдаленный, понятное дело что именно в этом случае можно вызвать test.fnc(), но на самом деле мне нужно передать test.fnc как параметр, что бы другой объект вызвал код функции, но нужен еще и сам объект.

Можно ли произвести вызов функции объекта test.fnc по myFnc() причем еще и иметь целый объект с его свойствами?
  • Вопрос задан
  • 5331 просмотр
Решения вопроса 1
Stdit
@Stdit
В JS нет классов, а this — это не ссылка на объект, а контекст выполнения. Можно использовать замыкания, если нужны какие-то свойства внутри объектов, например так:
function foo(param){
    var a = param;
    this.getA = function(){
        return a;
    };
    this.setA = function(p){
        a = p;
    };
}
var f = new foo(123);
g = f.getA();
console.log(g());
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Вам нужно зафиксировать контекст выполнения некоторой функции. Это делается с помощью Function.prototype.bind из ES5. Полифиллы есть в underscore.js и jQuery — _.bind и $.proxy соответственно.
Ответ написан
Комментировать
taliban
@taliban
php программист
А Вы не могли бы перефразировать вопрос? Особенно последнюю его часть, ибо не понятно что именно Вы хотите получить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы