比如下面的例子中,我在外部只能拿到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>
比如下面的例子中,我在外部只能拿到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>
13 回答13.1k 阅读
7 回答2.2k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.4k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读
var x=function(){
}
obj.x=x;
obj.x() //输出 "a"
按题主的逻辑 应该就是这个样子
然而,这跟原型链有半毛钱关系啊
b.prototype.a=a 这是什么鬼
你创建的obj是直接继承Object.prototype
如果,你要obj从原型继承这个两个方法
function xxx(){}
xxx.prototype.a=function(){
}
xxx.prototype.b=function(){
}
var obj=new xxx();
obj.a();
obj.b();
你要用call调用 也应该是
xxx.prototype.b.call()
或者
obj.a.call()