使用对象字面量语法构造函数两种方法区别
function myConstructor(){
//私有和特权成员
}
或者,
var myConstructor = function(){
//私有和特权成员
}
浏览器中的解释程序在执行javascript代码之前,首先要对代码进行变量初始化,即初始化window对象之下的所有顶级变量。
由于第2种定义函数的语法是通过赋值语句实现的,所以在初始化过程中不会被立即声明。
只有在解释器开始执行代码并执行到相应的赋值语句时,该函数才会被声明。因此调用该函数的语句只能出现在定义该函数之后。并且,如果使用第2种方法来定义构造函数,那么为其prototype属性中添加公共成员的代码。也应该放在该函数定义之后。
比如function example(){…}时,example()函数会在脚本之前立即被声明。这意味着你可以在脚本中任何地方调用example(),即使对函数的调用发生在函数的定义之前也没有问题。而对于第2种替代语法来说,如var example2 = function(){…},在脚本执行到赋值语句之前example2()函数是不存在的。如果你在该定义发生之前调用example2(),结果会失败。