Javascript 继承中的一些问题
Javascript 的继承类问题,已经被说烂了, 其核心只有一点在 子类B()中 运行 父类A().
一个简洁的实现:
- function B( arg1, arg2)//假设子类B有两个初始值,其中arg1是传递给父类A
- {
- //继承A
- A.call( this, arg1 );//这里假设父类A有一个初始值
- }
最近发现在函数继承有些问题,
请看下面:
假设A:
- function A( arg1 )
- {
- this.m1= arg1;
- this.oCap = document.getElementById(arg1);
- this.oCap.onmousedown = this.CaptureMouse(this);
- }
- //外部定义A的成员函数
- A.prototype.CaptureMouse = function( oThis )
- {
- return function()
- {
- oThis.oCap.setCapture(true);
- }
- }
此时, A() 自身,运行良好.
但是,问题出现在当B()继承A时, 解释器无法解释CaptureMouse
可能在B()中运行A时, 解释器对A的解释是采用顺序解释方法,所以处在后面的A.prototype.CaptureMouse没有被发现,所以会有这种现象.
在改成如下代码后,
问题解决:
- function A( arg1)
- {
- this.m1= arg1;
- this.oCap = document.getElementById(arg1);
- //先定义函数CaptureMouse
- this.CaptureMouse = function( oThis )
- {
- return function()
- {
- oThis.oCap.setCapture(true);
- }
- }
- //再应用CaptureMouse
- this.oCap.onmousedown = this.CaptureMouse(this);
- }