2014-12-03 79 views
-1

其实我试图在没有创建对象的情况下设置一个namspace [以避免全局变量]并尝试执行下面的操作。但是,带警报的方法data.sum和data.calc.mult的执行没有被调用。而是调用数据中的空声明。我可以帮助我知道为什么会发生这种情况吗?带名称空间的函数表达式

var data = { 
    name: "", 
    sum: function() {}, 
    calc : { 
     mult: function() {} 
    }      
}; 

data.sum(); 
data.calc.mult(); 

data.sum = function() { 
    alert('sum'); 
}; 

data.calc.mult = function() { 
    alert('mult'); 
}; 
+1

您正在定义'sum'和'calc.mult'作为空函数,称它们为(仍然为空),然后重新定义它们。你想实现什么? – Zudwa 2014-12-03 09:18:44

+0

欢迎使用函数声明和函数表达式分配之间的区别。 ;-) – RobG 2014-12-03 09:27:02

+0

RobG可以帮助你理解函数声明和函数表达式赋值之间的区别。 – vinod 2014-12-03 09:37:57

回答

0

如果data.sum功能重新定义后,把你的data.sum(),你会得到警告框。

0

定义像这样(对象定义中的函数定义):

var data = { 

    sum: function() { 
     alert('sum'); 
    }, 
    mult: function() { 
     alert('mult'); 
    } 
}; 

data.sum(); 
data.mult(); 
+0

最好使用函数声明或函数表达式的伙计们?请指教 – vinod 2014-12-03 10:18:41