function foo(){
foo.abc = function(){alert('def')}
this.abc = function(){alert('xyz')}
abc = function(){alert('@@@@@')};
var abc = function(){alert('$$$$$$')}
}
foo.prototype.abc = function(){alert('456');}
foo.abc = function(){alert('123');}
var f = new foo();
f.abc();
foo.abc();
abc();
麻烦大神们讲讲这段代码的详细含义。谢谢了。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- CaiHuajiang 2010-01-19 23:27关注
理解方式基本同上,但是要将function以一个object的方式理解。以下顺序执行:
[code="js"]var foo = {}; //定义一个名为foo的空方法,也是没有内容的空类
foo.prototype.abc = function(){alert('456');} //给foo类增加原型方法,效果等同于实现该类的方法都可以使用abc()--1
foo.abc = function(){alert('123');}//给foo类增加类方法,可以使用foo类直接调用--2var f = new foo();//实现foo类,并调用foo()方法
foo = function(){
foo.abc = function(){alert('def')} //效果等同于2处方法,直接给foo类增加类方法。这个无论写在那里都一样--3
this.abc = function(){alert('xyz')} //给当前域(即foo对象),增加一个对象方法。效果与1处相同。但存在区别,这里需要先将实现foo类,生成对应的对象,在其中对象设置一个abc方法,那么每个foo对象都会有一个abc方法。而设置原型方法只会申请一处内存。--4
abc = function(){alert('@@@@@')};//全局变量,,被设置到window中,可以通过winodw.abc()或abc()访问 --5
var abc = function(){alert('$$$$$$')} //局部不可见,覆盖上面abc()方法--6
}f.abc(); //调用的方法包括本来是2处,但被3处覆盖,显示def
foo.abc();//调用方法包括本来是1处,被4处覆盖,显示xyz
abc(); //调用方法包括本来是5处,但5处方法被隐藏,,无法调用,报错![/code]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信公众号自制会员卡没有收款渠道啊
- ¥15 stable diffusion
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿