2016-04-06 2 views
1

у меня есть объект с переменными и функциями ... и определение нового «function2»заменить старую функцию с новыми аргументами

var object = { 
    x: 11, 
    y: 22, 
    getX: function() { 
     return this.x; 
    } 
}; 

var function2 = function(value) { 
    return value;  
}; 

Я хочу, чтобы заменить определение старой функции GetX:

object.getX = function2(arg); 

но этот код не заменяет функцию, но устанавливает новое значение

как это сделать?

Я хочу значение "15", когда я называю object.getX (15) .... значение "аа", когда я называю object.getX ("AA")

ответ

2

Вы должны использовать bind(context,arguments..) для этой цели ,

object.getX = function2.bind(object, arg); 

И если вы просто хотите заменить function без установки каких-либо контекста (this),

Тогда вы можете сделать это просто.

object.getX = function2; 

Ваш полный код будет,

var object = { 
    x: 11, 
    y: 22, 
    getX: function() { 
     return this.x; 
    } 
}; 

var function2 = function(value) { return value; }; 
object.getX = function2.bind(object); 

console.log(object.getX("aa")); //"aa" 
1

Вы можете сделать просто как

object.getX = function2; 
Смежные вопросы