[英]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) @class
或property
等是什么意思?
2) func Class1
和Class1.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 Class1
和Class1.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.