1. نظرة عامة
في لغة Java ، يمكننا تحديد فصولنا الخاصة وإنشاء كائنات بناءً على هذه الفئات للاستخدام. في JavaScript ، يمكننا أيضًا تحديد فصولنا الخاصة ، مثل تحديد فئة المستخدم ، وفئة علامة التجزئة ، إلخ.
حاليًا في JavaScript ، هناك بعض الفئات القياسية ، مثل Date ، Array ، Regexp ، String ، Math ، Number ، وما إلى ذلك ، والتي توفر لنا العديد من وسائل الراحة للبرمجة. ولكن بالنسبة لبرامج العميل المعقدة ، فهذه بعيدة عن الكفاية.
على عكس Java ، توفر لنا Java2 العديد من الفصول القياسية ، والتي تلبي احتياجات البرمجة الخاصة بنا بشكل أساسي. ومع ذلك ، يوفر JavaScript بعض الفئات القياسية ، ويجب تنفيذ العديد من احتياجات البرمجة من قبل أنفسنا. على سبيل المثال ، لا يحتوي JavaScript على جدول هاشف ، وهو أمر غير مريح في التعامل مع قيم المفاتيح.
لذلك ، أعتقد شخصياً أن عرض كائن JavaScript الكامل يجب أن يكون كما يلي:
2. المفاهيم الأساسية
1. تخصيص الكائن.
وفقًا لآلية تمديد كائن JS ، يمكن للمستخدمين تخصيص كائنات JS ، والتي تشبه لغة Java.
المقابلة للكائنات المخصصة هي كائنات JS القياسية ، مثل التاريخ ، الصفيف ، الرياضيات ، إلخ.
2. النموذج الأولي
في JS ، هذه طريقة لإنشاء خصائص وطرق الكائن ، ومن خلال النموذج الأولي ، يمكنك إضافة خصائص وطرق جديدة إلى الكائنات.
مع النموذج الأولي ، يمكننا إضافة خصائص وطرق جديدة إلى كائنات JS القياسية ، على سبيل المثال ، لكائنات السلسلة ، يمكننا إضافة طريقة جديدة trim ().
على عكس لغات البرمجة الصارمة مثل Java ، يمكننا إضافة خصائص جديدة ديناميكيًا إلى كائنات JS أثناء وقت التشغيل.
ثلاثة ، قواعد القواعد
1. طريقة إنشاء الكائن
1) طريقة تهيئة الكائن
التنسيق: ObjectName = {Property1: value1 ، property2: value2 ، ... ، propertyn: valuen}
الخاصية خاصية كائن
القيمة هي قيمة الكائن ، ويمكن أن تكون القيمة واحدة من سلسلة أو رقم أو كائن
على سبيل المثال: var user = {name: "user1" ، العمر: 18} ؛
var user = {name: "user1" ، المهمة: {الراتب: 3000 ، العنوان: مبرمج}
الطرق التي يمكن تهيئتها أيضًا بهذه الطريقة ، على سبيل المثال:
var user = {name: "user1" ، العمر: 18 ، getName: function () {return this.name ؛ }}سيتم شرح ما يلي مع تركيز طريقة المنشئ ، بما في ذلك تعريف السمات والأساليب ، وسيتم شرحه أيضًا مع الإشارة إلى طريقة المنشئ.
2) طريقة المنشئ
اكتب مُنشئًا وقم بإنشاء كائن من خلال طريقة جديدة. يمكن أن يكون المُنشئ معلمات مُنشأة
على سبيل المثال:
مستخدم الوظيفة (الاسم ، العمر) {this.name = name ؛ this.age = العمر ؛ this.canfly = false ؛ } var use = new user () ؛2. تحديد خصائص الكائن
1) في JS ، يمكن تعريف ثلاثة أنواع من الخصائص للكائنات: الخصائص الخاصة وخصائص المثيل وخصائص الفئة. على غرار Java ، لا يمكن استخدام الخصائص الخاصة إلا داخل الكائنات. يجب الرجوع إلى خصائص المثيل من خلال مثيل الكائن ، ويمكن الرجوع إلى خصائص الفئة مباشرة من خلال اسم الفصل.
2) تعريف السمة الخاصة
لا يمكن تعريف السمات الخاصة واستخدامها إلا داخل المنشئ.
تنسيق بناء الجملة: var propertyName = value ؛
على سبيل المثال:
مستخدم الوظيفة (العمر) {this.age = Age ؛ var ischild = Age <12 ؛ this.islittlechild = ischild ؛ } var user = مستخدم جديد (15) ؛ ALERT (user.islittleChild) ؛ // تنبيه الطريق الصحيح (user.ischild) ؛ // الخطأ: الكائن لا يدعم هذه الخاصية أو الطريقة3) هناك أيضًا طريقتان لتحديد سمات المثيل:
طريقة النموذج الأولي ، تنسيق بناء الجملة: functionName.Prototype.PropertyName = القيمة
هذه الطريقة ، تنسيق بناء الجملة: this.propertyname = القيمة ، انتبه إلى الموقع المستخدم في الأمثلة التالية
يمكن أن تكون القيمة أعلاه إنشاء حرف ورقم وكائن.
على سبيل المثال:
مستخدم الوظيفة () {} user.prototype.name = "user1" ؛ user.prototype.age = 18 ؛ var user = new user () ؛ تنبيه (user.age) ؛ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――�3) تعريف سمة الفصل
تنسيق بناء الجملة: functionName.PropertyName = القيمة
على سبيل المثال:
دالة user () {} user.max_age = 200 ؛ user.min_age = 0 ؛ ALERT (user.max_age) ؛ارجع إلى خصائص فئة الكائنات القياسية JS:
number.max_value // الحد الأقصى للقيمة العددية Math.PI // PI
4) بالإضافة إلى الأساليب الأكثر رسمية أعلاه ، هناك أيضًا طريقة خاصة جدًا لتحديد السمات ، تنسيق بناء الجملة: OBJ [index] = value
مثال:
مستخدم الوظيفة (الاسم) {this.name = name ؛ this.age = 18 ؛ هذا [1] = "OK" ؛ هذا [200] = "السنة" ؛ } var user = مستخدم جديد ("user1") ؛ تنبيه (المستخدم [1]) ؛في المثال أعلاه ، من المهم الإشارة إلى أن سمة العمر لم يتم الحصول عليها من خلال هذا [1] ، ولا يمكن الحصول على [0] من خلال هذا [0]. بمعنى أنه يجب الرجوع إلى الفهرس المحدد بواسطة الفهرس باستخدام وضع الفهرس ، ولا يتم تعريفه بواسطة وضع الفهرس ، ويجب الرجوع إليه بطريقة طبيعية.
3. تحديد طريقة الكائن
1) هناك ثلاثة أنواع من الطرق التي يمكن تعريفها للكائنات في JS: الأساليب الخاصة وطرق المثيل وطرق الفصل ، على غرار Java:
لا يمكن استخدام الطرق الخاصة إلا داخل الكائنات
يجب إنشاء طرق مثيل قبل استخدامها
يمكن استخدام طرق الفصل مباشرة من خلال أسماء الفصل
ملاحظة: لا يمكن تنفيذ تعريف الطريقة من خلال طريقة الفهرس المذكورة أعلاه.
2) تحديد الأساليب الخاصة
يجب تعريف الطرق الخاصة داخل جسم المنشئ ولا يمكن استخدامها إلا داخل جسم المنشئ.
تنسيق بناء الجملة: وظيفة methodname (Arg1 ، ... ، argn) {}
على سبيل المثال:
مستخدم الوظيفة (الاسم) {this.name = name ؛ وظيفة getnamelength (namestr) {return namestr.length ؛ } this.nameLength = getnamelength (this.name) ؛ }3) تحديد طريقة مثيل ، يمكن استخدام طريقتين حاليًا:
طريقة النموذج الأولي ، المستخدمة خارج مُنشئ ، تنسيق بناء الجملة:
functionName.Prototype.MethodName = method ؛
أو
functionName.Prototype.MethodName = function (arg1 ، ... ، argn) {} ؛
هذه الطريقة ، المستخدمة داخل المنشئ ، تنسيق بناء الجملة:
this.methodname = method ؛
أو
this.methodname = function (arg1 ، ... ، argn) {} ؛
في وصف بناء الجملة أعلاه ، الطريقة هي طريقة موجودة بالفعل في الخارج. تعني طريقة الكائن المراد تعريفه بواسطة MethodName أنه يتم تعيين طريقة خارجية لطريقة الكائن مباشرة.
تحديد طريقة الكائن في شكل وظيفة (Arg1 ، ... ، Argn) {} هو شيء يجب على المطورين إتقانه.
بعض الأمثلة على تحديد طريقة مثيل: مثال 1
مستخدم الوظيفة (الاسم) {this.name = name ؛ this.getName = getusername ؛ this.setName = setusername ؛ } وظيفة getUserName () {return this.name ؛ } وظيفة setUserName (name) {this.name = name ؛ }بعض الأمثلة على تحديد طريقة مثيل: مثال 2
مستخدم الوظيفة (الاسم) {this.name = name ؛ this.getName = function () {return this.name ؛ } ؛ this.setName = function (newName) {this.name = newName ؛ } ؛ }بعض الأمثلة على تحديد طريقة مثيل: مثال 3
مستخدم الوظيفة (الاسم) {this.name = name ؛ } user.prototype.getName = getUserName ؛ user.prototype.setName = setUserName () ؛ وظيفة getUserName () {return this.name ؛ } وظيفة setUserName (name) {this.name = name ؛ }بعض الأمثلة على تحديد طريقة مثيل: مثال 4
مستخدم الوظيفة (الاسم) {this.name = name ؛ } user.prototype.getName = function () {return this.name ؛ } ؛ user.prototype.setName = function (newName) {this.name = newName ؛ } ؛4) تحديد طرق الفصل
يجب تحديد طرق الفصل خارج المُنشئ ويمكن الرجوع إليها مباشرة بواسطة اسم المنشئ.
تنسيق بناء الجملة:
functionName.MethodName = method ؛
أو
functionName.methodName = function (arg1 ، ... ، argn) {} ؛
مثال:
مستخدم الوظيفة (الاسم) {this.name = name ؛ } user.getMaxage = getUserMaxage ؛ وظيفة getUserMaxage () {return 200 ؛ }أو
user.getMaxage = function () {return 200 ؛} ؛
ALERT (user.getMaxage ()) ؛
4. مراجع الخصائص والأساليب
1) من منظور الرؤية:
لا يمكن الرجوع إلى الخصائص والأساليب الخاصة فقط داخل الكائن.
يمكن استخدام خصائص الأمثلة والأساليب في أي مكان ، ولكن يجب الرجوع إليها بواسطة الكائنات.
يمكن استخدام خصائص الفئة والأساليب في أي مكان ، ولكن لا يمكن الرجوع إليها بواسطة مثيل للكائن (هذا يختلف عن Java ، حيث يمكن الوصول إلى الأعضاء الثابتة بواسطة مثيل).
2) من مستوى الكائن:
على غرار الإشارات إلى حبوب جافا ، يمكن إجراء مراجع عميقة.
عدة طرق:
خاصية بسيطة: OBJ.PropertyName
خصائص الكائن: obj.innerobj.propertyname
خاصية الفهرس: OBJ.PropertyName [الفهرس]
للمراجع الأعمق ، على غرار تلك أعلاه.
3) من طريقة التعريف:
يجب الرجوع إلى السمات المحددة من خلال طريقة الفهرس من خلال طريقة الفهرس.
يجب الرجوع إلى السمات المحددة بالطرق غير المؤشر بطريقة طبيعية.
ملاحظة أيضًا: لا يمكن تحديد طريقة الكائن من خلال طريقة الفهرس.
5. إضافة وحذف الخصائص والأساليب الديناميكية
1) بالنسبة لكائن تم إنشاء مثيل له ، يمكننا إضافة وحذف خصائصه وطرقه ديناميكيًا. بناء الجملة كما يلي (على افتراض أن مثيل الكائن هو OBJ):
زيادة خصائص الكائن ديناميكية
obj.newPropertyName = value ؛
زيادة طريقة الكائن ديناميكيًا
obj.newmethodname = method أو = function (arg1 ، ... ، argn) {}
حذف خصائص الكائن ديناميكيًا
حذف OBJ.PropertyName
حذف طريقة الكائن ديناميكيًا
حذف OBJ.MethodName
2) مثال:
مستخدم الوظيفة (الاسم) {this.name = name ؛ this.age = 18 ؛ } var user = مستخدم جديد ("user1") ؛ user.sister = "سوزان" ؛ ALERT (user.sister) ؛ // تشغيل من خلال حذف user.sister ؛ ALERT (user.sister) ؛ // report Error: الكائن لا يدعم هذا الخاصية المستخدم. ALERT (user.getMotherName ()) ؛ // report ERRROR: الكائن لا يدعم هذه الطريقةأربعة ، ملخص
1. آلية الكائن المخصصة هي واحدة من أكثر الآليات جاذبية ل JS. هذا ببساطة رائع لمبرمجي C ++ و Java!
2. هناك طريقتان لإنشاء كائن: كائن تهيئة ومُنشئ.
3. خصائص الكائن والأساليب ، يتم تعريف القيود مع الرؤية ، والسمات والأساليب ذات الرؤية المختلفة بشكل مختلف.
تعتمد المقالة أعلاه على كائنات JS وسمات التشغيل والأساليب ، والتي هي جميع المحتويات التي أشاركها معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.