اذهب إلى المحتوى

السؤال

نشر

أحاول تطبيق OOP - Object Oriented Programming ضمن كود المشروع في node.js، ولكن هل يجب أن تتم تجزأة جميع الصفوف ضمن module.export ؟

وحاولت إنشاء الصفوف بالشكل التالي:

this.Class = function() {
    var name = ""
    this.username = ""
    var getName = function() {}
    this.getName = function() {} 
}

لكن واجهت العديد من الأخطاء بهذه المنهجية. فما هي الطريقة الصحيحة لإنشاء الصفوف واتباع OOP ضمن node.js؟ وهل هي مدعومة بشكل تلقائي ضمن node.js ؟

Recommended Posts

  • 1
نشر

يمكنك استخدام oop في node.js كالتالي, لنفترض لدينا الصنف Person

var method = Person.prototype;

function Person(name) {
    this._name = name;
}

method.getName = function() {
    return this._name;
};

module.exports = Person;

لاستخدامه في ملف آخر

var person = require("./person.js");

var Mohammed = new Person('Mohammed');

اذا كنت تريد تطبيق خاصية الوراثة يمكنك فعل التالي

var _super = require("./person.js").prototype,
    method = Student.prototype = Object.create( _super );

method.constructor = Student;

function Student() {
    _super.constructor.apply( this, arguments );
}

method.getName = function() {
    return _super.getName.call(this);
};

module.exports = Student;

 

  • 1
نشر

لإنشاء أصناف classes في JavaScript فيجب عليك كما في بقية اللغات المشهورة إستخدام الكلمة المحجوزة class كالآتي

// إنشاء الصنف
class Player{
  constructor(name, age){
    this.name = name;
    this.age = age
  }
}

// إنشاء نسخة من الصنف
let p = new Player('Ali', 14)

اما كيفية الإستيراد والتصدير في NodeJS فلديك طريقتين إما عبر CommonJS بإستخدام module.export كالآتي

// من ملف Player.js
// إنشاء الصنف
class Player{
  constructor(name, age){
    this.name = name;
    this.age = age
  }
}

module.exports = Player;

// من ملف آخر
const Player = require('./Player')

أو بإستخدام الطريقة الجديدة ل ES6 عبر إستخدام export و import كالآتي

// ملف Player.js
// إنشاء الصنف
export default class Player{
  constructor(name, age){
    this.name = name;
    this.age = age
  }
}

// ملف آخر
import Player from './Player.mjs'

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...