function A() {
this.B = function() {
var bla;
};
}
A.B.prototype.foo = function() {console.log("Do whatever");};
我明白了:
TypeError:无法读取未定义
的属性'prototype'
在这种情况下如何将函数添加到B的原型中?
答案 0 :(得分:3)
我们的代码中有一些错误......以下是:
function A() {
this.B = function() {
var blah;
};
}
a = new A();
a.B.prototype.foo = function() {console.log("Do whatever")};
你的第一个问题是:
this.B() = function...
这不是有效的代码,因为你正在调用方法B并将其作为一个函数,你必须引用该属性。
你的另一个错误,就是没有实例化一个“A”对象,该函数本身不能用作对象,它只能被调用。这就是为什么当你有:
A.B.prototype
您收到了该错误消息。
我希望能为你解决一些问题,如果你有更多的疑问,请告诉我。
答案 1 :(得分:0)
B
是A
的属性,只能从A
的实例访问。
var aObj = new A;
aObj.B();
如果不使用A.B
的实例,则无法访问A
。
您可以访问aObj.B.prototype
,并为其添加方法。
aObj.B.prototype.foo = function(){
return 'test';
};
var bar = new aObj.B;
console.log(bar.foo()); // 'test'
var bObj = new A;
var foobar = new bObj.B;
console.log(foobar.foo()); // `foo` is undefined
答案 2 :(得分:0)
您需要通过将内部函数添加到外部原型来使其可访问,然后您可以使用Outer.prototype.Inner.prototype将函数添加到内部对象,而不需要外部对象的实例。< / p>
function A() {this.a="a";}
A.prototype.B = function() {this.b="b";}
A.prototype.B.prototype.foo = function() {console.log("b is:"+this.b);}
var a=new A();
var b=new a.B();
b.foo();