ECMAScript에서 가장 흥미롭고 강력한 것은 함수입니다. 최근 js 라이브러리를 개선하면서 함수를 자주 사용하지만 ECMAScript 함수의 기능을 이해하는 사람은 거의 없다는 사실을 발견했습니다.
1: 함수란 무엇인가요?
ECMAScript 함수는 실제로 객체입니다. 각 함수는 Function 유형의 인스턴스이며 속성과 메서드를 갖습니다. 함수 이름은 실제로 함수 객체에 대한 포인터이며 바인딩되지 않습니다. 특정 기능.
2: 함수 생성 방법
(1):function 사람(이름)
{
반환 이름
}
(2):var 사람=함수(이름)
}
(3): var Person=new function("name","return name"); (권장되지 않음, ECMAScript는 이를 두 번 구문 분석하므로 권장되지 않음)
3: 함수 선언과 함수 표현식의 차이점
ECMAScript는 함수 선언과 함수 표현식을 동일하게 구문 분석하지 않습니다. 파서는 함수 선언을 먼저 읽고 코드 앞에 나타나게 합니다.
예:
assert(false) ;
function 주장(값, msg) {
if (!value) {
alert (msg || (값이 true가 아님))
}
}
이 줄이 실행될 때까지 함수 표현식이 구문 분석되지 않습니다.
예:ert(false);
varassert=function(value,msg){
if(!value){
alert (msg || ( 값 " true가 아님")));
}
}
4: 이 속성을 이해하세요
이 속성은 우리가 자주 사용하는 속성은 Java, C# 및 PHP와 대략 유사한 동작을 가지고 있습니다.
예: window.name='Think 현재와 미래에 대해' ;
window.name = "지금은 생각하지 않고;
showName();
function showName() {
alert(this.name);
}
5: 나만의 클래스 라이브러리 플러그인 만들기
함수에 대한 간략한 소개만으로는 생성자 모드, 프로토타입 모드, 프로토타입 체인 등은
클래스 만들기
코드 복사를 이해하는 데 시간이 많이 걸립니다. 다음과 같습니다: var Class = function () {
var extclass = function () {
//속성에 의해 전달된 매개변수 수신
this.init.apply(this, 인수);
}
//클래스에 사용자 정의 속성 추가
extclass.prototype.init = function () { }
//prototypr에 대한 별칭을 정의하시겠습니까? = extclass.prototype;
//클래스의 별칭을 정의하시겠습니까?
extclass.fn.parent = extclass;//클래스에 속성을 추가합니다.
extclass.extend = function(obj)
var Extended = obj.extended;
for (var i in obj) {
extclass.fn[i] = obj[i]
}
if (확장) Extended(extclass );
};
//인스턴스에 속성 추가
extclass.include = function (obj) {
var include = obj.included
for (var i in obj)
extclass.fn[i] = obj [i];
}
if(포함)(extclass)
}
return extclass; >
클래스 라이브러리의 전반적인 프레임워크 구성이 완료되었습니다. 이렇게 하면 클래스 생성 시 확장 메소드를 호출할 수 있고, 인스턴스 생성 시 include 메소드를 호출할 수 있습니다. 다음 장에서는 이를 기반으로 더 많은 기능을 확장하고 프로토타입을 기반으로 하는 "클래스"에 상속을 추가할 것입니다.