1. 기본 클래스 활용
방법 1:
function sth(a) // 생성자
{
this.a = a;
this.fun = output;
함수 출력(a, b, c)
{
document.write(this.a)
}
//호출
var s = new sth(250);
s.fun(1, 2, 3)
ouput(1, 2, 3); sth 예전에는 틀렸어요
방법 2:
function sth(a)
{
this.a = a;
this.output = function()
{
document.write(this.a)
}
}
var s = new sth(2);
s.output(); // 출력 2
2. 상속
방법 1: function A(x)
{
this.x = x ;
}
함수 B(x, y)
{
// 방법 1
/*
this.construct = A
this.construct(x)
삭제 .construct;
*/
// 방법 2
//A.call(this, x)
// 방법 3
A.apply(this , new Array(x)); // A.apply(this, 인수)도 가능하지만 인수 순서가 정확해야 합니다.
this.y = y
this.print = function ()
{
document.write("x = ", x,
", y = ", y)
}
}
var b = new B(1, 2);
b.print();
alert(B 인스턴스of A); // false 출력
장점: 다중 상속이 가능합니다(다중 호출만 하면 됩니다)
단점:
· 생성자로 사용해야 합니다.
· 이러한 유형의 상속을 조작하기 위해 인스턴스 오브 연산자를 사용하면 false가 됩니다
방법 2:
함수 A()
{
}
A.prototype.x = 1
함수 B()
{
}
B.prototype = new A(); // 매개변수를 사용할 수 없습니다!
B.prototype.y = 2;
B.prototype.print = function()
{
document.write(this.x, ", ", this.y, "
}
var b = new B();
b.print();
document.write(b 인스턴스of A); // true 출력
단점:
· 다중 상속을 구현할 수 없음
· 생성자가 매개변수를 사용하지 않음
팁
보통 둘 다 혼합 모드를 사용합니다
function A(x)
{
this.x = x;
}
A.prototype.printx = function() // 클래스 A에 쓰기 this.printx = function.... 아래에서도 가능합니다.
{
document.write(this.x, "
")
}
function B(x, y)
{
A.call(this, x);
this.y = y
}
B.prototype = new A();
B.prototype.printxy = function()
{
document.write(this.x, ", ", this.y, "
")
}
var b = new B(1, 2);
b.printx(); // 출력 1
b.printxy() // 출력 1, 2
document.write(b instanceof A); // true를 출력합니다
3. 유사한 정적 멤버 함수 사용
함수 sth(a)
{
this.a = a
}
sth.fun = 함수
{
문서. write(s.a );
}
var s = new sth(2)
sth.fun(s); // 출력 2
4. 객체 해제
코드 복사 코드는 다음과 같습니다. 🎜>var obj = new Object; // obj는 참조입니다
obj = null; // 이 객체를 모두 해제해야 하는 경우 역참조는 자동으로 가비지 수집을 수행합니다. 🎜 >
5. 함수 객체
var v = new Function("arg1", "arg2", "document.write(arg1 arg2);"); // 함수 객체를 정의합니다. 매개변수는 arg1, arg2입니다.
v(1, 2); // 3을 출력할 것입니다
6. 콜백 함수
함수 콜백(func, arg)
{
func(arg);
}
function fun(arg)
{
document.write(arg); 🎜>}
//callback(func, "sb"); // 이 접근 방식은 작동하지 않습니다
var func = new Function("arg", "fun(arg);" );
// 물론 func(arg)를 특정 실행 코드로 대체할 수도 있습니다.
// 하지만 함수 코드가 크다면 이렇게 하는 것이 가장 좋습니다
callback(func, "sb ");
7. 함수 오버로딩
function fun()
{
스위치(arguments.length)
{
사례 1:
document.write(arguments[0])
break; 사례 2 :
document.write(arguments[0] 인수[1]);
break;
기본값:
document.write("ERROR!")
break; > }
}
재미(1)
재미(1, 2);
8. "정적 변수"를 사용하여 함수를 구현하려면 함수 클로저를 사용하세요.
var v = 1
function fun2()
{
v
document.write(v);
document.write("
");
return v;
}
return fun2
var func = fun() ;
func(); // 출력 2
func(); // 출력 3
func();