자바스크립트 기본 개념_기본지식 기본설명 포럼 게시글 학습기록

WBOY
풀어 주다: 2016-05-16 18:55:49
원래의
791명이 탐색했습니다.

1. 이 객체에 대하여

코드 복사 코드는 다음과 같습니다.

보기 plaincopy toclipboardprint ?
var obj1=new Object();
var obj2=new Object()

//두 객체에 p 속성을 추가하고 각각 1과 2를 동일하게 합니다. obj1 .p=1;
obj2.p=2;

//p 값을 표시하는 메소드를 obj1에 추가합니다.
obj1.getP=function(){
alert( this .p); //표면적으로 이 포인터는 obj1을 가리킵니다
}

//obj1의 getP 메서드를 호출하면 결과가 1로 표시됩니다.
obj1.getP(); 🎜>
//obj2의 getP 메소드를 obj1의 getP 메소드와 동일하게 만듭니다
obj2.getP=obj1.getP;

//obj2의 getP 메소드를 호출하면 결과가 2로 표시됩니다.
obj2 .getP() ;
var obj1=new Object();
var obj2=new Object();

//두 객체에 p 속성을 각각 추가합니다.
obj1 .p=1;
obj2.p=2;

//obj1에 메소드를 추가하여 p 값을 표시합니다.
obj1.getP=function(){
Alert(this .p); //표면적으로 이 포인터는 obj1을 가리킵니다
}

//obj1의 getP 메서드를 호출하면 결과가 1로 표시됩니다.
obj1.getP() ;

//obj2의 getP 메소드를 obj1의 getP 메소드와 동일하게 만듭니다.
obj2.getP=obj1.getP;

//obj2의 getP 메소드를 호출하면 결과가 2로 표시됩니다. >obj2.getP() ;



2. 함수 객체에 대하여




코드 복사
코드는 다음과 같습니다. //함수 객체 메소드 method1 추가 Function.prototype.method1=function(){
Alert("function1");
}
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;ialert(인수 [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)

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿