Задать вопрос

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 просмотр
Подписаться 3 Оценить Комментировать
Решения вопроса 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 программист
А Вы не могли бы перефразировать вопрос? Особенно последнюю его часть, ибо не понятно что именно Вы хотите получить.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы