js Function对象的prototype的属性

myseemydog 2013-04-09 05:44:30
谷歌的V8 引擎
var A = function (){};

A.prototype.log = function(){
}

A.log();//报错 A没有方法log

此时为什么不会去搜索原型对象中的log呢?
...全文
118 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
l676331991 2013-05-04
  • 打赏
  • 举报
回复
好比一个是静态方法,一个是实例方法。 A.log是静态方法,用类名调用, A.prototype.log 是实例方法,用A的实例调用,即(new A()).log调用。
UEAnswer 2013-04-09
  • 打赏
  • 举报
回复
谷歌的V8 引擎

var A = function (){};

A.prototype.log = function(){
}

应该使用var a=new A(); a.log(); A.prototype是一个object,这个object有log方法,而A函数没有,所以A.log()报错。 你也可以使用A.prototype.log().
ftiger 2013-04-09
  • 打赏
  • 举报
回复
原型这样理解,如果有个对象C是A,那就去找A的原型。所以A的原型是在Function里找,new A的原型在A这里找。
myseemydog 2013-04-09
  • 打赏
  • 举报
回复
引用 4 楼 functionsub 的回复:
引用 3 楼 myseemydog 的回复:引用 1 楼 ftiger 的回复:如果你new A了,会去找原型的,但直接操作function就不会去找,一定要用A.log可以这样 A.log=A.prototype.log=funciton(){}; JavaScript code?123456789var A = function (){}; A.prototype……
感谢、、、、、真是绕,结贴
functionsub 2013-04-09
  • 打赏
  • 举报
回复
引用 5 楼 myseemydog 的回复:
引用 2 楼 functionsub 的回复:JavaScript code?12345var A = function(){}Function.prototype.log = function(){ alert('log')}A.log() 注意区分Fcuntion与function。。。 还是不太明白。。。你这么写。只要是函数不都有log了么、。、、……
是的。看你例子里直接调用A.log么我以为你想要这效果了。 找原型只会找构造函数的原型。 你例子里的是去原型里找了,不过是去Function的原型里找了。 像1L那样new一个C出来,再调用log,才是去A的原型里找,才不会有问题。
myseemydog 2013-04-09
  • 打赏
  • 举报
回复
引用 2 楼 functionsub 的回复:
JavaScript code?12345var A = function(){}Function.prototype.log = function(){ alert('log')}A.log() 注意区分Fcuntion与function。。。
还是不太明白。。。你这么写。只要是函数不都有log了么、。、、
functionsub 2013-04-09
  • 打赏
  • 举报
回复
引用 3 楼 myseemydog 的回复:
引用 1 楼 ftiger 的回复:如果你new A了,会去找原型的,但直接操作function就不会去找,一定要用A.log可以这样 A.log=A.prototype.log=funciton(){}; JavaScript code?123456789var A = function (){}; A.prototype.log = function(){ ……
你直接操作Function对象,找的是Function的原型,不是你自己的原型。 例子里的A是Function的一个实例。
myseemydog 2013-04-09
  • 打赏
  • 举报
回复
引用 1 楼 ftiger 的回复:
如果你new A了,会去找原型的,但直接操作function就不会去找,一定要用A.log可以这样 A.log=A.prototype.log=funciton(){}; JavaScript code?123456789var A = function (){}; A.prototype.log = function(){ alert("I am log");……
为嘛直接操作Function对象就不会去找原型呢。。。给个理由亲、、
functionsub 2013-04-09
  • 打赏
  • 举报
回复
var A = function(){}
Function.prototype.log = function(){
    alert('log')
}
A.log()
注意区分Fcuntion与function。。。
ftiger 2013-04-09
  • 打赏
  • 举报
回复
如果你new A了,会去找原型的,但直接操作function就不会去找,一定要用A.log可以这样 A.log=A.prototype.log=funciton(){};
var A = function (){};

A.prototype.log = function(){
	alert("I am log");
}

var c= new A();
c.log();
A.log();

87,904

社区成员

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

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