클래스 생성자
JavaScript 함수는 클래스의 생성자 역할도 하므로 함수를 선언하기만 하면 new 키워드를 사용하여 클래스의 인스턴스를 만들 수 있습니다.
function Person(name) { this.name = name; this.toString = function() { return 'Hello, ' + this.name + '!'; }; } var p = new Person('Ghostheaven'); alert(p); // Hello, Ghostheaven!
위의 예에서 Person 함수는 클래스의 생성자로 사용되었으며, 이는 새로 생성된 인스턴스 객체를 가리키며, 자세한 객체 지향 JavaScript 프로그래밍을 위해 인스턴스에 속성을 추가할 수 있습니다. , 이 글을 참고해주세요. 여기서 제가 이야기하고 싶은 것은 JavaScript 함수를 클래스 생성자로 사용할 때 반환 값 문제입니다.
function MyClass(name) { this.name = name; return name; // 构造函数的返回值? } var obj1 = new MyClass('foo'); var obj2 = MyClass('foo'); var obj3 = new MyClass({}); var obj4 = MyClass({});
위 생성자는 매우 특별합니다. return 문이 있는데, obj1~obj4는 각각 어떤 객체를 가리킵니까? 실제 결과는 다음과 같습니다.
obj1 = MyClass对象 obj2 = 'foo' obj3 = {} obj4 = {}
Function 클래스
JavaScript 런타임에는 Function이라는 내장 클래스가 있습니다. function 키워드를 사용하여 함수를 선언하는 것은 실제로 Function 클래스 개체를 만드는 간단한 형식입니다. call, Apply, Bind 등 Function 클래스의 메소드는 instanceof 키워드를 통해 확인할 수 있습니다.
Function은 클래스이므로 그 생성자는 Function(그 자체도 Function 클래스의 객체임)이고, new 키워드를 통해 함수 객체 생성이 가능해야 합니다. 여기에 Function 클래스를 사용하여 함수를 구성하는 방법에 대한 첫 번째 괴물이 있습니다. Function의 구문은 다음과 같습니다.
new Function ([arg1[, arg2[, ... argN]],] functionBody)
여기서 arg1, arg2, ... argN은 매개변수 이름을 나타내는 문자열이고 functionBody도 함수 본문을 나타내는 문자열입니다. 이전 매개변수 이름은 선택사항이며 생성자는 입니다. 함수는 마지막 매개변수를 함수 본문으로 처리하고 이전 매개변수를 매개변수로 처리합니다.
var func1 = new Function('name', 'return "Hello, " + name + "!";'); func1('Ghostheaven'); // Hello, Ghostheaven!
위 메서드는 Function을 통해 함수를 구성합니다. 이 함수는 function 키워드로 선언된 다른 함수와 완전히 동일합니다.
Function 클래스는 고유한 용도로 사용되어 다양한 함수 논리를 동적으로 생성하거나 eval 함수의 함수를 대체하고 현재 환경이 오염되는 것을 방지할 수 있습니다*.
자체 업데이트 기능
많은 언어에서는 한 번 함수를 선언하면 같은 이름의 함수를 다시 선언할 수 없습니다. 그렇지 않으면 구문 오류가 발생합니다. 그러나 JavaScript의 함수는 반복적으로 선언할 수 있을 뿐만 아니라 업데이트할 수도 있습니다. 그들 자신. 스스로 잡아먹는 괴물이 나타났다!
function selfUpdate() { window.selfUpdate = function() { alert('second run!'); }; alert('first run!'); } selfUpdate(); // first run! selfUpdate(); // second run!
이런 종류의 함수는 한 번만 실행되는 로직에 사용할 수 있으며, 첫 번째 실행 후 전체 로직이 새로운 로직으로 대체됩니다.
위 내용은 JavaScript 클래스 생성자 및 자체 업데이트 기능 코드 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!