الخصائص والأساليب التي يمكن الوصول إليها من قبل جميع الحالات التي يمكن الوصول إليها في جافا سكريبت في كثير من الحالات. جزء من المعرفة.
تعاريف النوع الأساسية هي كما يلي:
نسخ رمز رمز على النحو التالي:
وظيفة person () {}
person.prototype = {
مُنشئ: شخص ،
الاسم: "شخص" ،
العمر: 100 ،
الأصدقاء: [A "،" B "] ،،
getName: function () {
إرجاع هذا.
}
} ؛
حدد أمثلة شخصين ، وقم بتعديل خاصية الاسم في المثيل (يتم تعريف السمة في النموذج الأولي) ، رمز الاختبار كما يلي
نسخ رمز رمز على النحو التالي:
var p1 = شخص جديد () ؛
var p2 = شخص جديد () ؛
document.write (p1.name+"<br/>") ؛
document.write (p2.name+"<br/>") ؛
p1.name = "p1" ؛
document.write (p1.name+"<br/>") ؛
document.write (p2.name+"<br/>") ؛
document.write (p1.hasownproperty ("name")+"<br/>") ؛
document.write (p2.hasownproperty ("name")+"<br/>") ؛
document.write (object.keys (p1)+"<br/>") ؛
document.write (object.keys (p2)+"<br/>") ؛
document.write (object.get.getownpropertynames (person.protype)+"<br/>") ؛
document.write (person.protype.name+"<br/>") ؛
بعد الاختبار ، يمكن العثور على أن p1.name = "P1" لا يعدل قيمة الاسم ، ولكن إضافة سمة اسم إلى namepe في المثيل p1. يمكن أن يرى الكائن الأخير. keys (p1) أيضًا أن هناك سمة اسم إضافية في مثيل P1 بدون P2. جميع الإرسال في JS هو نقل القيمة. رمز لتوضيح هذه المشكلة.
نسخ رمز رمز على النحو التالي:
var obj = new Object () ؛
obj.name = "obj" ؛
وظيفة changeObj (o) {
O.Name = "تم تغيير" ؛
o = كائن جديد () ؛
O.Name = "NewObj" ؛
}
changeObj (OBJ) ؛
document.write (obj.name) ؛
في طريقة changeOBJ ، o = كائن جديد () لا يعدل قيمة المعلمة O ، ولكنه يقطع العلاقة المرجعية الأصلية ، وبالتالي فإن النتيجة ليست جديدة ولكن تم تغييرها ، ولكن تم تغييرها
الاختبار التالي لتعديل سمة الأصدقاء في النموذج الأولي في المثال الأول.
نسخ رمز رمز على النحو التالي:
p1.friends.push ("C") ؛
document.write (p1.friends+"<br/>") ؛
document.write (p2.friends+"<br/>") ؛
p1.friends = ["x" ، "y" ، "z"] ؛
document.write (p1.friends+"<br/>") ؛
document.write (p2.friends+"<br/>") ؛
document.write (p1.hasownproperty ("Friends")+"<br/>") ؛
document.write (p2.hasownproperty ("Friends")+"<br/>") ؛
document.write (object.keys (p1)+"<br/>") ؛
document.write (object.keys (p2)+"<br/>") ؛
document.write (object.get.getownpropertynames (person.protype)+"<br/>") ؛
document.write (person.protype.friends+"<br/>") ؛
تكون نتائج الاختبار هي نفس الاختبار الأول.
استنادًا إلى هاتين نتائج الاختبار ، وجد أن سمات نوع القيمة في النموذج الأولي لا يمكن تعديلها مباشرة في المثيل (بالطبع ، لا ينبغي تحديد نوع القيمة هذا في النموذج الأولي.