2016-04-06 51 views
1

我有一個變量和函數對象...和新的「功能2」用新的替換舊帶有參數的函數

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)....值 「AA」 當我打電話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;