[英]How to add functions to prototype of inner function in the global scope in JavaScript?
function A() {
this.B = function() {
var bla;
};
}
A.B.prototype.foo = function() {console.log("Do whatever");};
我明白了:
TypeError:無法讀取未定義的屬性“prototype”
在這種情況下如何向B的原型添加函數?
我們的代碼中有幾個錯誤...這是如何:
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
您收到了該錯誤消息。
我希望能為你解決一些問題,如果你有更多疑問,請告訴我。
您需要通過將內部函數添加到外部原型來使其可訪問,然后您可以使用Outer.prototype.Inner.prototype將函數添加到內部對象,而不需要外部對象的實例。
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();
B
是A
的屬性,只能從A
實例訪問。
var aObj = new A;
aObj.B();
如果不使用A
實例,則無法訪問AB
。
您可以訪問aObj.B.prototype
,並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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.