function mArray(){
this.id="fdsa";
this.name="fdsafd";
}
mArray.prototype=new Array();
mArray.prototype.sayHi=function(){alert("hi");}
var m=new mArray();
m.push("1");
m.push("2");
m.push("3");
m.sayHi();
alert(m[0]); //这里会是什么结果?
alert(m.length); //这里又是什么结果?
大家先不要帖代码运行,直接看代码两个地方是什么结果?
问题补充
2楼的实例继承是没问题,但是占内存,而且想不通为什么原型继承会出现这么奇怪的问题。方法都继承下来了,但是执行的结果不合常理。
奇怪js原型继承,奇怪!实在想不通!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 无冥 2009-10-30 11:57关注
其实很正常, 内置对象在引擎初始化阶段就被创建好了,
有些属性会被引擎隐式的维护..其他对象继承不来的, 比如包装类, Date对象的方法, [color=red]Array自动维护的length属性. [/color]
所以你的mArray对象, 引擎并不帮你维护length属性, 所以始终为0, 也因为这样,
push方法虽然继承过来了, 但push时会覆盖之前push的元素.
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 c程序不知道为什么得不到结果
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置