哪位高手能解释一下这个关于原型的代码的运行结果

Triumph 2009-09-23 01:52:19

function Class1() {}

Class1.prototype.getName = function() { alert('Class1') };

Class1.prototype.getName();



运行结果的确弹出了对话框,这里 prototype 指向了什么对象?
...全文
75 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeenZ 2009-09-23
  • 打赏
  • 举报
回复
是的,两个是不相同的,作用域不同
Triumph 2009-09-23
  • 打赏
  • 举报
回复
不用回答了,我已经想到了,不可能一样的
Triumph 2009-09-23
  • 打赏
  • 举报
回复
这样看起来和原型方式一样,那么第二种方法的 getName 所依附的对象是否就是 prototype 对象?

也就是说,Class1.prototype.getName() 和 Class1.getName() 是不是相同的?
BeenZ 2009-09-23
  • 打赏
  • 举报
回复
Class1.getName = function() { alert('Class1') };

Class1.getName();是给Class1一个属性,绑在该对象上

口才不好,不太好表述,还是代码的例子吧


function Class1() {}

Class1.getName = function() { alert('Class1') };

Class1.getName();

var cs2=new Class1();
cs2.getName(); //undefine


function Class1() {}

Class1.prototype.getName = function() { alert('Class1') };

Class1.prototype.getName();

var cs2=new Class1();
cs2.getName(); //class1

Triumph 2009-09-23
  • 打赏
  • 举报
回复
再问一下,下面的代码:

function Class1() {}

Class1.getName = function() { alert('Class1') };

Class1.getName();


和前面的例子 仅 从最后调用 getName 方法来说,有什么不同?
Triumph 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 beenz 的回复:]
这么比喻可能恰当一点,相当于你创建了一个static对象
不需要实例就可以调用

准确点说,是js里一切都是对象,包括你的class1,你给这个对象创建了一个方法(相当于静态的),然后直接调用
[/Quote]

令我茅塞顿开!
s_liangchao1s 2009-09-23
  • 打赏
  • 举报
回复

<script type="text/javascript">
<!--
function Class1(){}

var obj = new Object();

alert(Class1.prototype instanceof Object);//看下关系
obj.getName = function(){ alert('Class1') };
obj.getName();


//-->
</script>
BeenZ 2009-09-23
  • 打赏
  • 举报
回复
这么比喻可能恰当一点,相当于你创建了一个static对象
不需要实例就可以调用

准确点说,是js里一切都是对象,包括你的class1,你给这个对象创建了一个方法(相当于静态的),然后直接调用
richurd 2009-09-23
  • 打赏
  • 举报
回复
Class1.prototype :直接返回原型的实例!
s_liangchao1s 2009-09-23
  • 打赏
  • 举报
回复

function Class1() {}

Class1.prototype.getName = function() { alert('Class1') };

Class1.prototype.getName();
JS里 方法也是属性 如果我给化简下这样 你应该可以懂

var getName = function(){ alert('Class1')};
getName();
// 跟上面的含义上时等价的.这里的getName是绑定在全局window上的 相当于window.getName
// 而你上面的getName是绑定在Class1的原型上的.而原型本身就是个对象
Triumph 2009-09-23
  • 打赏
  • 举报
回复
但Class1并没有实例,怎么会弹出?
BeenZ 2009-09-23
  • 打赏
  • 举报
回复
这里是指向你的Class1对象

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧