هل يجب أن تعيد فئة JavaScript بشكل صريح شيئًا؟
-
29-09-2019 - |
سؤال
لقد كنت أكتب بعضًا من Adobe Illustrator JavaScripts لتحسين سير العمل الخاص بي. لقد كنت حقًا أسيطر على OOP مؤخرًا ، لذا فقد كنت أكتبها باستخدام كائنات وأعتقد حقًا أنها تساعد في الحفاظ على نظافة الكود الخاص بي وقابل للوقوع بسهولة. ومع ذلك أردت التحقق من أفضل الممارسات معكم يا رفاق.
لدي كائن مستطيل يخلق (ثلاثة تخمينات) ... مستطيل. تبدو هكذا
function rectangle(parent, coords, name, guide) {
this.top = coords[0];
this.left = coords[1];
this.width = coords[2];
this.height = coords[3];
this.parent = (parent) ? parent : doc;
var rect = this.parent.pathItems.rectangle(this.top, this.left, this.width, this.height);
rect.name = (name) ? name : "Path";
rect.guides = (guide) ? true : false;
return rect;
}
ومع ذلك ، يعمل الرمز بشكل جيد مع أو بدون ذلك
return rect
لذا سؤالي هو ماذا يفعل
new rectangle(args);
العودة إذا لم أقول ذلك صراحة؟
إذا فعلت هذا:
var myRectangle = new rectangle(args);
myRectangle.left = -100;
إنه يعمل بشكل جيد فقط أنا return rect
أم لا.
شكرا جزيلا على المساعدة.
المحلول
يجب أن يحتوي كائن JavaScript الخاص بك على خصائص وطرق فقط.
استخدم الكلمة الرئيسية للعودة داخل الطريقة.
function rectangle(parent, coords, name, guide) {
this.top = coords[0];
this.left = coords[1];
this.width = coords[2];
this.height = coords[3];
this.parent = (parent) ? parent : doc;
this.draw = function () { // add a method to perform an action.
var rect = this.parent.pathItems.rectangle(this.top, this.left, this.width, this.height);
rect.name = (name) ? name : "Path";
rect.guides = (guide) ? true : false;
return rect;
};
}
كيف ستستخدم كائنك.
var myRectangle = new rectangle(args);
myRectangle.draw();
نصائح أخرى
غير ضروري تماما. سيتم إنشاء مثيل وتعيينه تلقائيًا عند الاتصال new
. لا حاجة للعودة this
أو أي شيء من هذا القبيل.
في لغات OOP بدقة مثل جافا أو C ++, ، البنائين لا تعيد أي شيء.