تختلف وظائف JavaScript عن اللغات الأخرى. يتم الحفاظ على كل وظيفة وتشغيلها ككائن. من خلال خصائص الكائنات الوظيفية، يمكنك بسهولة تعيين دالة لمتغير أو تمرير الدالة كمعلمة. قبل المتابعة، دعونا نلقي نظرة على بناء جملة استخدام الوظائف:
هنا اقتباس:
الدالة func1(...){…}
var func2=function(…){…};
var func3=function func4(…){…};
var func5=new Function();
انسخ رمز الكود كما يلي:
<نوع البرنامج النصي = "نص/جافا سكريبت">
// 1، وضع استدعاء الأسلوب
// عندما يتم حفظ دالة كخاصية لكائن ما، فإننا نسميها طريقة للكائن، ثم يتم ربطها بالكائن
فار myObject={
الاسم: "myObject"،
القيمة: 0،
الزيادة: وظيفة (الأعداد) {
this.value += typeof(num) === 'number' ?
رد هذا؛
} ,
إلى سلسلة : وظيفة () {
إرجاع '[الكائن:' + this.name + ' {value:' + this.value + '}]'؛
}
}
تنبيه(myObject.increment(10).increment(20).toString()); // [Object:myObject {value:30}]
// 2، وضع استدعاء الوظيفة
// عندما لا تكون الدالة دالة لكائن ما، يتم استدعاؤها كدالة، وهي مرتبطة بالكائن العام. وهذا خطأ في تصميم اللغة. إذا كان تصميم اللغة صحيحًا، عند استدعاء الوظيفة الداخلية، فيجب أن تظل مرتبطة بالمتغير this للوظيفة الخارجية.
فار myObject={
الاسم: "myObject"،
القيمة: 0،
الزيادة: وظيفة (الأعداد) {
this.value += typeof(num) === 'number' ?
رد هذا؛
} ,
إلى سلسلة : وظيفة () {
إرجاع '[الكائن:' + this.name + ' {value:' + this.value + '}]'؛
},
الحصول على معلومات: وظيفة () {
فار الذاتي=هذا;
العودة (وظيفة () {
// return this.toString(); // يشير هذا في الوظيفة الداخلية المجهولة إلى نافذة الكائن العامة، ويخرج [نافذة الكائن]
return self.toString(); // حدد المتغير selft وقم بتعيين القيمة this له، ثم يمكن للوظيفة الداخلية الوصول إلى هذا الإشارة إلى الكائن من خلال هذا المتغير
})();
}
}
تنبيه(myObject.increment(10).increment(20).toString()); // [Object:myObject {value:30}]
// 3، وضع استدعاء المنشئ
// JavaScript هي لغة تعتمد على الميراث النموذجي، مما يعني أن الكائنات يمكن أن ترث الخصائص مباشرة من كائنات أخرى، واللغة بلا فئات.
// إذا تم استدعاء دالة بمقدمتها الجديدة، فسيتم إنشاء كائن جديد لإخفاء عضو النموذج الأولي المتصل بالوظيفة، وسيتم ربط هذا بمثيل المُنشئ.
الدالة MyObject(الاسم){
this.name = name ||.'MyObject';
this.value=0;
هذه الزيادة = الوظيفة (الأعداد) {
this.value += typeof(num) === 'number' ?
};
this.toString = function(){
إرجاع '[الكائن:' + this.name + ' {value:' + this.value + '}]'؛
}
this.target = this;
}
MyObject.prototype.getInfo = function(){
إرجاع this.toString();
}
// قم بإنشاء كائن MyObject.prototype في نفس الوقت، حيث يرث myObject جميع خصائص MyObject.prototype. ويرتبط هذا بمثيل MyObject.
var myObject = new MyObject();
myObject.increment(10);
تنبيه (myObject.value)؛ //10
varotherObject = new MyObject();
otherObject.increment(20);
تنبيه (otherObject.value)؛ //20
تنبيه (myObject.target===myObject)؛
تنبيه (myObject.target.getInfo()) // [Object:MyObject {value:10}]
// 4، تطبيق وضع الاتصال
// JavaScript هي لغة برمجة وظيفية موجهة للكائنات، لذا يمكن أن تحتوي الوظائف على طرق. تبدو طريقة تطبيق الوظيفة كما لو أن الكائن لديه هذه الطريقة، وهذا يشير إلى الكائن.
// Apply يتلقى معلمتين، الأولى هي الكائن المراد ربطه (الكائن المشار إليه بهذا)، والثانية هي مصفوفة المعلمات.
الدالة MyObject(الاسم){
this.name = name ||.'MyObject';
this.value = 0;
هذه الزيادة = الوظيفة (الأعداد) {
this.value += typeof(num) === 'number' ?
};
this.toString=function(){
إرجاع '[الكائن:'+this.name+' {القيمة:'+this.value+'}]';
}
this.target=this;
}
وظيفة الحصول على المعلومات () {
إرجاع this.toString();
}
var myObj = new MyObject();
تنبيه(getInfo.apply(myObj)); //[Object:MyObject {value:0}]، يشير هذا إلى myObj
تنبيه (getInfo.apply (نافذة))؛ //[نافذة الكائن]، يشير هذا إلى النافذة
// لفترة من الوقت
وظيفة وظيفة (أ، ب) {
تنبيه (أ)؛ // 1
تنبيه (ب)؛ // 2
for(var i=0;i<arguments.length;i++){
تنبيه (الوسائط [i])؛ // 1، 2، 1، 2، 3
}
فار ط=0;
بينما (i<arguments.length){
تنبيه (الوسائط [i])؛ // 1، 2، 1، 2، 3
أنا=أنا+1;
}
}
وظيفة(1,2,3);
فار ط=0
لـ (i=0;i<=10;i++) {
document.write("الرقم هو " + i + "<br/>")
}
</script>