簡體   English   中英

在 Javascript 中使用實例 - @class、@param、@property、@augments

[英]Using instances in Javascript - @class, @param, @property, @augments

我有一個 javascript 文件。 有 3 個類,我需要創建這些類實例並使用它們包含的方法。 問題是,這 3 個類不像class Example {...} 相反,它們看起來像這樣:

* @class
* @param {Array|Object} param1 - [REQUIRED]
* @param {Array|String} param2 - [OPTIONAL]
* @property {String} prop1
* @property {String} prop2
* @property {Array} prop3
* @property {Class2} prop4

function Class1(param1, param2) {
    ...
}

@augments Class1
@param {String} param5
@return {String}

Class1.prototype.someName = function (param5) {
    ...
}

它是這樣的。 我的問題是:

1) @classproperty等是什么意思?

2) func Class1Class1.prototype.someName什么區別?

3)如何從這 3 個類創建instance並使用另一個 js 文件中的方法。 因為我需要從這個 javascript 文件中創建所有內容。 它們包含一些 HTML 和 CSS 類,例如:

function Class1(param1, param2) {
    this.openTag;
    this.closeTag;
    this.htmlTags;

    this.openTag = '<div id="' + this.elementId + '">';
    this.closeTag = '</div>';

    this.htmlTags = {
        sectionTitle: {
            openTag: '<h2 class="class1">',
            closeTag: '</h2>'
        },
        group: {
            openTag: '<div class="class2">',
            closeTag: '</div>'
        },
        table: {
            openTag: '<table class="class3">',
            closeTag: '</table>'
        }
    }
   ...
}

如何創建這些類的實例並從另一個 javascript 文件中調用它們? 當我嘗試進行 ES6 導入/導出時,它給了我這個錯誤:

Access to script at 'file:///Users/user/Desktop/project/someName.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

&

app.js:1 Uncaught SyntaxError: Cannot use import statement outside a module

它不允許我從另一個 js 文件調用函數。

如果您逐步解釋所有內容,我將不勝感激:)

@class是什么意思?

這就是所謂的 JSDoc。 它基本上等同於 c# 的摘要 xml 注釋。 在高層次上,它只是記錄您的方法、類、變量、函數等的一種更好的方式……而不是到處都做//... 您可以在此處了解有關 JSDoc 的更多信息。 其他語言也有類似的東西。 不過,我最熟悉 c# 和 JS。

JSDoc 最酷的地方在於,如果你有一個支持它的 IDE,你基本上可以只用 hover 來處理某些東西,並且假設你在使用的任何模塊上都有正確的 JSDoc,那么你就會立即獲得文檔。 你不必跳到源頭看看作者是否給你留下了任何評論。 他們只會彈出內聯。 WebStorm 在這方面做得很好。

func Class1Class1.prototype.someName有什么區別

這(IMO)是在 JavaScript 中編寫課程的老派方式。 使用 ES6+,您可以只使用關鍵字class而不是function並且必須使用原型。

本質上,

function Class1 (...) {...}

是舊的做事方式

class Class1 {... }

話雖如此,

Class1.prototype.someName = function (...) {... }

是老派的做法

class Class1 () {
    constructor(...) {...}
    someName(...) { ... }

}

對於你的第三個問題,我不清楚你在問什么。

使用現代課程與“舊”方式的示例:

 // Older way of creating a Person class function Person(first, last) { this.first = first; this.last = last; } Person.prototype = { getFullName: function () { return this.first + ' ' + this.last; } } var oldPerson = new Person('John', 'Doe'); console.log(oldPerson.getFullName()); // Modern way of creating a class class Person1 { constructor(first, last) { this.first = first; this.last = last; } getFullName() { return `${this.first} ${this.last}`; } } const newPerson = new Person1('Jane', 'Doe'); console.log(newPerson.getFullName());

暫無
暫無

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

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