ฟังก์ชัน JavaScript แตกต่างจากภาษาอื่น แต่ละฟังก์ชันได้รับการบำรุงรักษาและทำงานเป็นวัตถุ ด้วยคุณสมบัติของวัตถุฟังก์ชัน คุณสามารถกำหนดฟังก์ชันให้กับตัวแปรหรือส่งฟังก์ชันเป็นพารามิเตอร์ได้อย่างง่ายดาย ก่อนดำเนินการต่อ มาดูไวยากรณ์ของการใช้ฟังก์ชันกันก่อน:
นี่คือคำพูด:
ฟังก์ชั่น func1(…){…}
var func2=function(…){…};
var func3=ฟังก์ชั่น func4(…){…};
var func5=ฟังก์ชันใหม่();
คัดลอกรหัสรหัสดังต่อไปนี้:
<script type="text/javascript">
// 1 โหมดการเรียกเมธอด
// เมื่อฟังก์ชันถูกบันทึกเป็นคุณสมบัติของวัตถุ เราจะเรียกมันว่าเมธอดของวัตถุ จากนั้นสิ่งนี้จะถูกผูกไว้กับวัตถุ
var myObject={
ชื่อ: "วัตถุของฉัน",
ค่า: 0,
เพิ่มขึ้น : function(num){
this.value += typeof(num) === 'number' ? num : 0;
คืนสิ่งนี้;
-
toString : ฟังก์ชั่น(){
กลับ '[วัตถุ:' + this.name + ' {value:' + this.value + '}]';
-
-
alert(myObject.increation(10).increase(20).toString()); // [Object:myObject {ค่า:30}]
// 2 โหมดการเรียกใช้ฟังก์ชัน
// เมื่อฟังก์ชันไม่ใช่ฟังก์ชันของอ็อบเจ็กต์ ฟังก์ชันนั้นจะถูกเรียกว่าฟังก์ชัน และฟังก์ชันนี้จะถูกผูกไว้กับอ็อบเจ็กต์โกลบอล นี่เป็นข้อผิดพลาดในการออกแบบภาษา หากการออกแบบภาษาถูกต้อง เมื่อเรียกใช้ฟังก์ชันภายใน ก็ควรยังคงผูกไว้กับตัวแปรนี้ของฟังก์ชันภายนอก
var myObject={
ชื่อ: "วัตถุของฉัน",
ค่า: 0,
เพิ่มขึ้น : function(num){
this.value += typeof(num) === 'number' ? num : 0;
คืนสิ่งนี้;
-
toString : ฟังก์ชั่น(){
กลับ '[วัตถุ:' + this.name + ' {value:' + this.value + '}]';
-
getInfo: ฟังก์ชั่น () {
var self = นี่;
กลับ (ฟังก์ชั่น () {
// return this.toString(); // สิ่งนี้ในฟังก์ชันที่ไม่ระบุชื่อภายในชี้ไปที่หน้าต่างวัตถุส่วนกลางและส่งออก [หน้าต่างวัตถุ]
return self.toString(); // กำหนดตัวแปร selft และกำหนดค่านี้ จากนั้นฟังก์ชันภายในจะสามารถเข้าถึงการชี้ไปที่วัตถุผ่านตัวแปรนี้ได้
-
-
-
alert(myObject.increation(10).increase(20).toString()); // [Object:myObject {ค่า:30}]
// 3 โหมดการเรียกคอนสตรัคเตอร์
// JavaScript เป็นภาษาที่อิงตามการสืบทอดต้นแบบ ซึ่งหมายความว่าอ็อบเจ็กต์สามารถสืบทอดคุณสมบัติได้โดยตรงจากอ็อบเจ็กต์อื่น และภาษานั้นไม่มีคลาส
// หากเรียกใช้ฟังก์ชันโดยมี new อยู่ข้างหน้า ออบเจ็กต์ใหม่จะถูกสร้างขึ้นเพื่อซ่อนสมาชิกต้นแบบที่เชื่อมต่อกับฟังก์ชัน และสิ่งนี้จะถูกผูกไว้กับอินสแตนซ์ของ Constructor
ฟังก์ชั่น MyObject (ชื่อ) {
this.name = ชื่อ ||. 'MyObject';
นี้.value=0;
this.increase = ฟังก์ชั่น (ตัวเลข) {
this.value += typeof(num) === 'number' ? num : 0;
-
this.toString = ฟังก์ชั่น () {
กลับ '[วัตถุ:' + this.name + ' {value:' + this.value + '}]';
-
this.target = นี้;
-
MyObject.prototype.getInfo = ฟังก์ชั่น(){
กลับ this.toString();
-
// สร้างวัตถุ MyObject.prototype ในเวลาเดียวกัน myObject สืบทอดคุณสมบัติทั้งหมดของ MyObject.prototype ซึ่งเชื่อมโยงกับอินสแตนซ์ของ MyObject
var myObject = ใหม่ MyObject();
myObject.เพิ่มขึ้น (10);
alert(myObject.value); //10
var otherObject = ใหม่ MyObject();
วัตถุอื่น ๆ เพิ่มขึ้น (20);
alert(otherObject.value); //20
alert(myObject.target===myObject); // จริง
alert(myObject.target.getInfo()); // [Object:MyObject {ค่า:10}]
// 4 ใช้โหมดการโทร
// JavaScript เป็นภาษาการเขียนโปรแกรมเชิงวัตถุเชิงฟังก์ชัน ดังนั้นฟังก์ชันจึงสามารถมีเมธอดได้ วิธีการใช้ของฟังก์ชันจะเหมือนกับว่าวัตถุมีวิธีนี้ และสิ่งนี้ชี้ไปที่วัตถุ
// Apply ได้รับพารามิเตอร์สองตัว ตัวแรกคือวัตถุที่จะผูก (วัตถุชี้ไปโดยสิ่งนี้) และตัวที่สองคืออาร์เรย์พารามิเตอร์
ฟังก์ชั่น MyObject (ชื่อ) {
this.name = ชื่อ ||. 'MyObject';
นี่.value = 0;
this.increase = ฟังก์ชั่น (ตัวเลข) {
this.value += typeof(num) === 'number' ? num : 0;
-
นี้.toString=ฟังก์ชั่น(){
กลับ '[วัตถุ:'+this.name+' {value:'+this.value+'}]';
-
this.target=สิ่งนี้;
-
ฟังก์ชัน getInfo(){
กลับ this.toString();
-
var myObj = ใหม่ MyObject();
alert(getInfo.apply(myObj)); //[Object:MyObject {value:0}] ชี้ไปที่ myObj
alert(getInfo.apply(window)); //[หน้าต่างวัตถุ] ชี้ไปที่หน้าต่าง
// ชั่วขณะหนึ่ง
ฟังก์ชั่น func(a,b){
การแจ้งเตือน (ก); // 1
การแจ้งเตือน(b); // 2
สำหรับ(var i=0;i<arguments.length;i++){
การแจ้งเตือน (อาร์กิวเมนต์ [i]); // 1, 2, 1, 2, 3
-
วาร์ i=0;
ในขณะที่ (i<arguments.length){
การแจ้งเตือน (อาร์กิวเมนต์ [i]); // 1, 2, 1, 2, 3
ฉัน=ฉัน+1;
-
-
ฟังก์ชั่น(1,2,3);
วาร์ i=0
สำหรับ (i=0;i<=10;i++) {
document.write("ตัวเลขคือ " + i + "<br/>")
-
</สคริปต์>