簡體   English   中英

如何在JavaScript的全局范圍內向內部函數原型添加函數?

[英]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();

BA的屬性,只能從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM