簡體   English   中英

為什么我不能從 object 方法訪問我的自定義字符串原型?

[英]Why can't I access my custom string prototype from an object method?

我有一個自定義字符串原型,可以對字符串執行一些操作;

String.prototype.norm_to_ascii=function(){return unescape(encodeURIComponent(this))};

在我的示例中,我想要應用原型的字符串是位於 SampleObject object 之外的全局 object 屬性。 在我的實際代碼中,它會被這樣引用;

var userObject = {
   name: "SomeName",
   id: "SomeID"
}

除了在特定的 Object 方法中之外,它在我的項目(其他 js 文件)中的任何地方都有效;

var SampleObject = {   //This is in it's own js file called sampleobject.js
   test: 0,
   doStringThings {
      let something = userObject.id.norm_to_ascii()  //RETURNS userObject.id.norm_to_ascii is not a function
   }
}

例如,在 SampleObject 中,我需要使用 id,但我需要對 userObject 中的 id 值進行一些基本解碼,這正是字符串原型所做的。

我可以在其他地方使用這個字符串原型。 這是在 chrome 擴展中,所以我在服務工作者中定義了原型,它可以在彈出和內容頁面以及服務工作者中使用,所以它必須與 object 方法有關,但我不知道為什么? 誰能提供任何建議以將該原型公開給 object 方法而無需重新定義它?

編輯我的解釋應該更清楚。 我更新了上面的示例。

你忘了this

this.otherTestValue.norm_to_ascii()

在看到更新后的問題后,我的結論是您在運行它之后定義norm_to_ascii function。
更改導入的順序應該可以解決問題。 您能否向我們展示項目的結構以及您在哪里導入帶有該原型的文件?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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