js中函数通过call来调用,是否就无法拿到原函数的信息了?

比如下面的例子中,我在外部只能拿到obj,是否能通过obj来拿到a

<script>
"use strict";

var a=function(){
    console.log("a")
}

var b=function(){
    console.log("b")
}
b.prototype.a=a

var obj={}
var c=function(){
    b.call()
}

obj.c=c
obj.c()

</script>
阅读 2.4k
2 个回答

var x=function(){

a.call()

}

obj.x=x;

obj.x() //输出 "a"

按题主的逻辑 应该就是这个样子

然而,这跟原型链有半毛钱关系啊

b.prototype.a=a 这是什么鬼

你创建的obj是直接继承Object.prototype

如果,你要obj从原型继承这个两个方法

function xxx(){}
xxx.prototype.a=function(){

 console.log("a");

}
xxx.prototype.b=function(){

 console.log("a");

}
var obj=new xxx();
obj.a();
obj.b();

你要用call调用 也应该是
xxx.prototype.b.call()
或者
obj.a.call()

这个问题我提的思路不清,关闭了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题