JavaScript 함수는 다른 언어와 다릅니다. 각 함수는 개체로 유지되고 실행됩니다. 함수 객체의 속성을 통해 함수를 변수에 쉽게 할당하거나 함수를 매개변수로 전달할 수 있습니다. 계속하기 전에 함수 사용 구문을 살펴보겠습니다.
다음은 인용문입니다:
함수 func1(…){…}
var func2=함수(…){…};
var func3=함수 func4(…){…};
var func5=새 함수();
다음과 같이 코드 코드를 복사합니다.
<스크립트 유형="텍스트/자바스크립트">
// 1, 메소드 호출 모드
// 함수가 객체의 속성으로 저장되면 이를 객체의 메서드라고 부르고 객체에 바인딩됩니다.
var myObject={
이름: "myObject",
값: 0,
증분 : 함수(숫자){
this.value += typeof(num) === '숫자' ? num : 0;
이거 돌려줘;
} ,
toString : 함수(){
return '[객체:' + this.name + '{값:' + this.value + '}]';
}
}
Alert(myObject.increment(10).increment(20).toString()) // [Object:myObject {value:30}]
// 2, 함수 호출 모드
// 함수가 객체의 함수가 아닌 경우 함수라고 불리며 전역 객체에 바인딩됩니다. 이것은 언어 설계의 실수입니다. 언어 설계가 올바른 경우 내부 함수가 호출될 때 이 함수는 여전히 외부 함수의 this 변수에 바인딩되어야 합니다.
var myObject={
이름: "myObject",
값: 0,
증분 : 함수(숫자){
this.value += typeof(num) === '숫자' ? num : 0;
이거 돌려줘;
} ,
toString : 함수(){
return '[객체:' + this.name + '{값:' + this.value + '}]';
},
getInfo: 함수(){
var 자기=이것;
반환 (함수(){
//return this.toString(); // 내부 익명 함수에서 전역 개체 창을 가리키고 [object Window]를 출력합니다.
return self.toString(); // selft 변수를 정의하고 this 값을 할당하면 내부 함수는 이 변수를 통해 객체를 가리키는 this에 액세스할 수 있습니다.
})();
}
}
Alert(myObject.increment(10).increment(20).toString()) // [Object:myObject {value:30}]
// 3, 생성자 호출 모드
// JavaScript는 프로토타입 상속을 기반으로 하는 언어입니다. 즉, 객체는 다른 객체로부터 직접 속성을 상속받을 수 있으며 언어에는 클래스가 없습니다.
// 앞에 new를 두고 함수를 호출하면 함수에 연결된 프로토타입 멤버를 숨기는 새 객체가 생성되고 생성자의 인스턴스에 바인딩됩니다.
함수 MyObject(이름){
this.name = 이름 || 'MyObject';
this.값=0;
this.increment = 함수(숫자){
this.value += typeof(num) === '숫자' ? num : 0;
};
this.toString = 함수(){
return '[객체:' + this.name + '{값:' + this.value + '}]';
}
this.target = 이것;
}
MyObject.prototype.getInfo = 함수(){
this.toString()을 반환합니다.
}
// 동시에 MyObject.prototype 객체를 생성합니다. myObject는 MyObject.prototype의 모든 속성을 상속합니다. 이는 MyObject의 인스턴스에 바인딩됩니다.
var myObject = new MyObject();
myObject.increment(10);
경고(myObject.value); //10
var otherObject = new MyObject();
otherObject.increment(20);
경고(다른 개체.값); //20
경고(myObject.target===myObject); // 참
경고(myObject.target.getInfo()); // [Object:MyObject {value:10}]
// 4, 호출 모드 적용
// JavaScript는 함수형 객체 지향 프로그래밍 언어이므로 함수에는 메서드가 있을 수 있습니다. 함수의 적용 메소드는 마치 객체가 이 메소드를 갖고 있는 것과 같고, 이것이 객체를 가리킨다.
// 적용은 두 개의 매개변수를 받습니다. 첫 번째는 바인딩할 개체(이 개체가 가리키는 개체)이고 두 번째는 매개변수 배열입니다.
함수 MyObject(이름){
this.name = 이름 || 'MyObject';
this.value = 0;
this.increment = 함수(숫자){
this.value += typeof(num) === '숫자' ? num : 0;
};
this.toString=함수(){
return '[Object:'+this.name+' {값:'+this.value+'}]';
}
this.target=this;
}
함수 getInfo(){
this.toString()을 반환합니다.
}
var myObj = new MyObject();
Alert(getInfo.apply(myObj)); //[Object:MyObject {value:0}], 이는 myObj를 가리킵니다.
Alert(getInfo.apply(window)); //[객체 창], 이는 창을 가리킵니다.
// 동안과 동안
함수 함수(a,b){
경고(a); // 1
경고(b); // 2
for(var i=0;i<arguments.length;i++){
경고(인수[i]); // 1, 2, 1, 2, 3
}
var i=0;
while(i<arguments.length){
경고(인수[i]); // 1, 2, 1, 2, 3
나는=나는+1;
}
}
기능(1,2,3);
변수 i=0
(i=0;i<=10;i++) {
document.write("숫자는 " + i + "<br/>")
}
</script>