我只是在涉及JavaScript Prototyping的地方弄湿了,我遇到了一些麻烦。
我需要根据原型对象为我正在处理的系统的_LEAVE
原型创建一个LEAVE
对象。 _LEAVE
对象有一个名为Ready
的函数,该函数应在文档准备好时触发。该系统的一些较旧的代码已经具有类似的功能,我试图保持统一。
这是我正在尝试的代码,但我一直收到错误:
var LEAVE = function () {
}
$(document).ready(function () {
_LEAVE.Ready();
});
var _LEAVE = function (params) {
this.Ready = function () {
alert ("Leave Ready");
};
}
_LEAVE.prototype = new LEAVE();
错误:
SCRIPT438:对象不支持属性或方法'Ready' leave.js,第6行5字符
我不确定我哪里出错了,因为这似乎是系统其他部分发生的事情。至少,类似的事情正在发生,但我正在努力围绕旧代码...
非常感谢任何人可以给我的建议! : - )
答案 0 :(得分:3)
我不确定我是否理解正确,但您是否尝试创建LEAVE
对象的实例?如果是,LEAVE
必须是构造函数,Ready
应该是prototype
上的方法:
var LEAVE = function () {};
LEAVE.prototype.Ready = function () {
alert("Leave Ready");
};
现在,您可以通过使用LEAVE
运算符调用构造函数来实例化new
:
var _LEAVE = new LEAVE(); // _LEAVE is an instance of LEAVE
$(document).ready(function () {
_LEAVE.Ready(); // Ready is a method of `LEAVE.prototype`
});
声明为prototype
对象属性的方法由所有实例共享。因此,LEAVE
的所有实例都可以使用.Ready
方法,但它们将在内存中共享该函数的一个副本(分配给LEAVE.prototype
属性的副本)。
答案 1 :(得分:0)
你在这里做的只是从父LEAVE函数继承了子_LEAVE函数。但是如果要在子类中调用方法,则需要创建它的实例。所以你需要创建一个_LEAVE类的实例。只需添加以下行:
var _LEAVE_OBJECT = new _LEAVE();
并使用 _LEAVE_OBJECT.Ready()代替_LEAVE.Ready();在$(文件).ready。
修改后的代码:
var LEAVE = function () {
}
$(document).ready(function () {
_LEAVE_OBJECT.Ready();
});
var _LEAVE = function (params) {
this.Ready = function () {
alert ("Leave Ready");
};
}
_LEAVE.prototype = new LEAVE();
var _LEAVE_OBJECT = new _LEAVE();