2012-02-06 51 views
0

我有几个JavaScript对象,每个都有一个设置方法。它们的代码都是相同的,所以我创建了一个名为setupMain的函数。然后对于对象的每个实例,我试图将它的设置值设置为setupMain。像下面的东西......但是当我在创建实例之后查看设置值时,它会返回undefined而不是指向setupMain函数。任何想法为什么?谢谢。在JavaScript中指定另一种方法的方法

var customObject = function(){ 
    this.title = ""; 
} 
var setupMain = function(obj){ 
    obj.title = "initial setup value"; 
} 

var co = new customObject(); 
co.setup = setupMain(co); 
+3

'co.setup'未定义,因为您调用了函数'setupMain',它没有返回值。 – 2012-02-06 17:06:05

+0

好的,那我该怎么回来才能让它分配函数,它的内容是co.setup?谢谢。 – 2012-02-06 17:10:29

+0

在下面添加我的答案,让我知道如果它不清楚。 – 2012-02-06 17:21:44

回答

1

你可能会寻找这样的事情:

var customObject = function(){ 
    this.title = ""; 
} 
var setupMain = function(){ //"This" will point to instance, such as co 
    this.title = "initial setup value"; 
} 

var co = new customObject(); 
co.setup = setupMain; //Reference to function 

co.setup(); //Call the setup function 
window.alert(co.title); 

另外,如果你不希望有保留每段时间设定setup函数来创建一个实例,你可以将它原型:

customObject.prototype.setup = setupMain; //Now, every customObject has a setup function 
var co = new customObject(); 
co.setup(); 
window.alert(co.title); 

最后,如果你不想有打电话setup();每一次,你可以使用const内调用setup ructor:

var customObject = function(){ 
    this.setup(); //Call shared setupMain function because it's part of the prototype 
} 
var setupMain = function(){ 
    this.title = "initial setup value"; 
} 

customObject.prototype.setup = setupMain; //This can be shared across many prototypes 

var co = new customObject(); 
window.alert(co.title); 
+0

谢谢。这是一个很大的帮助。 – 2012-02-06 17:28:57

+0

没问题,留着吧! – 2012-02-06 17:31:05

0

您的代码评估setupMain(共),并将结果指定给c.setup ...因此:为 “初始设置值”

  • setupMain

    • setupMain套co.title返回undefined
    • co.setup设置为undefined

    你应该在功能分配给您的变量,如:

    var setupMain = function() { 
        this.title = "initial setup value"; 
    } 
    ... 
    co.setup = setupMain; // Without the() 
    
  • 相关问题