我试图获得对JavaScript的真正掌握,并且我正在为我绊倒一个大问题。我习惯于使用C语言,我发现的其中一个障碍是处理JavaScript的原型功能,并且在声明函数时,因为它涉及到执行顺序。使用原型并处理执行顺序
例如,采取以下代码:
var construct = new Constructor(); //I can do this even if its above the declaration of the object.
construct.MyPrivilagedFunction(); //Can do this here too, even though it's above the function declaration.
construct.MyPublicFunction(); //Can't do this because it is above the function declaration.
function Constructor() {
//Private member
var m_Ding = "Ding!";
//Accessible publicly and has access to private member.
this.MyPrivilagedFunction = function() {
console.log(m_Ding);
}
}
Constuctor.prototype.MyPublicFunction = function() {
//Doesn't have access to private members. This doesn't work.
console.log(m_Ding);
}
据我所知,原型提供了更好的性能,因为那么函数的副本不存储在你的对象的每个实例,而是每个实例都指相同的功能(我猜每个新的实例可以被认为是一个全新的对象类型?)。但是,原型不允许我在定义之前使用函数。此外,原型函数不能访问该对象的私有成员。
这只是一个真正的问题,因为我正在开发一个项目,其中两个对象需要使用对方的功能。如果我先在代码中放置一个对象,它将无法访问第二个对象,因为原型函数遵守执行顺序(从顶部到底部)。我注意到我的对象可能应该是一个对象字面值(比如object = {property:value}),但我仍然试图牢牢把握范围和原型来尝试现在处理。
什么问题不清楚给我。 – 2013-03-03 10:04:00