1. 이 객체에 대하여
2. 함수 객체에 대하여
}
function func1(a,b,c){
return a b c;
}
func1.method1(); //힌트: function1
func1.method1.method1(); //팁: function1
//일반 객체와 함수 객체를 모두 포함하는 객체 메서드 getType을 추가합니다.
Object.prototype.getType=function (){
return typeof (this);
}
var array1=new Array()
function func1(a,b){
return a b; >alert(array1.getType() ); //프롬프트: 객체
alert(func1.getType()); //프롬프트: 함수
//func2는 다음과 같이 전달됩니다. func1의 공식 매개변수 theFunc에 객체를 추가한 다음 func1
function func1(theFunc){
theFunc()
}
function func2(){
alert; ("ok");
}
func1(func2); // 팁: ok
//함수 호출 시 지정된 매개변수 외에 암시적 객체 인수도 생성됩니다.
function func(a,b){
alert(a)
alert(b)
for(var i=0;i
alert(인수 [i]);
}
}
func(1,2,3) //힌트: 1,2,3
/*
인수 개체의 또 다른 속성은 함수 개체 자체에 대한 참조를 나타내는
호출자입니다.
이는 이름이 지정되지 않은 함수의 재귀를 구현하거나 함수 캡슐화를 보장하는 데 유용합니다. .
*/
var sum =function(n){
if(1==n)
return 1;
else
n 인수를 반환합니다.callee(n-1) ;
}
alert(sum (100)); //Prompt: 5050
/*
JavaScript는 함수 개체에 대해 Apply와 Call이라는 두 가지 메서드를 정의합니다.
그 함수는 실행하기 위해 다른 개체에 바인딩됩니다. 둘 사이의 유일한 차이점은 매개 변수를 정의하는 방법입니다.
다음은 참조 조각입니다.
Function.prototype.apply(thisArg ,argArray);
Function.prototype .call(thisArg[,arg1[,arg2…]]);
함수 프로토타입에서 볼 수 있듯이 첫 번째 매개변수의 이름은 thisArg입니다. 즉, 모든 함수 내부의 this 포인터가 thisArg에 할당됩니다.
이는 해당 함수를 다른 개체의 메서드로 실행하는 목적을 달성합니다.
thisArg 매개변수를 제외하고 두 메소드 모두 Function 객체에 전달된 매개변수입니다.
*/
//속성 p와 메소드 A를 사용하여 func1 함수 정의
function func1(){
this.p="func1-"
this.A = function(arg){
alert(this.p arg);
}
}
//속성 p와 메서드 B를 사용하여 func2 함수 정의
function func2(){
this.p="func2-";
this.B=function(arg){
alert(this.p arg)
}
}
var obj1=new func1 () ;
var obj2=new func2();
obj1.A("byA"); //func1-byA 표시
obj2.B("byB"); >obj1.A.apply(obj2,["byA"]); //func2-byA를 표시합니다. 여기서 ["byA"]는 요소가 하나만 있는 배열입니다. 아래는
obj2.B.apply(와 같습니다. obj1,["byB"]); //func1-byB 표시
obj1.A.call(obj2,"byA") //func2-byA 표시
obj2.B.call(obj1,"byB "); //func1-byB 표시
/*
obj1의 메소드 A가 obj2에 바인딩되어 실행된 후
함수 A의 전체 실행 환경이 obj2로 전송되는 것을 볼 수 있습니다. this 포인터는 obj2를 가리킵니다.
마찬가지로 obj2의 함수 B를 obj1 개체에 바인딩하여 실행할 수도 있습니다.
코드의 마지막 4줄은 적용 함수와 호출 함수의 매개변수 형태의 차이점을 보여줍니다.
*/
/*
은 인수의 길이 속성과 다릅니다.
함수 객체에도 길이 속성이 있습니다. 함수가 정의될 때 지정됩니다.
*/
function sum(a,b){
return a b; }
경고(합계 .length)