원인
나는 그날 프로토 타입을 사용했다.
propotype.js 코드 조각
코드는 다음과 같습니다.
var class = {
작성 : function () {
return function () {
this.initialize.apply (this, arguments);
}
}
}
// 클래스 사용 방법은 다음과 같습니다
var a = class.create ();
A. 프로토 타입 = {
초기화 : 함수 (v) {
값 값 = v;
}
showValue : function () {
경고 (this. value);
}
}
var a = new a ( 'helloord!');
a. showvalue (); // 대화 상자 Hellow!
l 초기화?
L Apply 방법은 무엇을합니까?
l 인수 변수?
l 새 a 이후 초기화 방법이 실행되는 이유는 무엇입니까?
답을 찾으십시오 :
둘째, JS 타겟팅 객체
초기화는 무엇입니까?
메소드를 나타내는 변수 일 뿐이며 사용은 클래스의 생성자입니다.
특정 함수는 JS에 의해 지원되므로 JS의 객체는 무엇입니까? Java와 동일하고 다른 것은 무엇입니까?
코드보기 :
코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사하십시오.
var className = function (v) {{
this.value = v;
this.getValue = function () {
이 value를 반환하십시오.
}
this.setValue = function (v) {
this.value = v;
}
}
그렇다면 JS의 함수와 클래스의 차이점은 무엇입니까?
실제로, 그것은 동일합니다.
좋다
코드는 다음과 같습니다.
var ObjectName1 = 새로운 클래스 이름 ( "a");
그 중에서도 ObjectName1은 클래스 이름 생성자를 수행 한 후 얻은 객체이며, 클래스 이름 함수의 경우 새로 구성된 객체를 의미하므로 ObjectName1은 다음 후에 하나의 속성과 두 가지 메소드를 갖습니다. 당신은 이것을 통해 그들을 호출 할 수 있습니다 :
코드는 다음과 같습니다.
ObjectName1.setValue ( ''hello '');
Alert (ObjectName1.getValue ());
Alert (ObjectName1.Value); // 대화 상자 안녕하세요
그래서
코드는 다음과 같습니다.
var ObjectName2 = ClassName ( "B");
그래서 ObjectName2는 무엇을 얻습니까? 분명히 메소드의 반환 값은 여기에서 클래스 이름은 일반적인 함수로만 사용됩니다 (첫 번째 문자는 대문자화되지만). 그러나 이전 클래스 이름에는 리턴 값이 없으므로 ObjectName2는 누가 "B"를 주는가? 여기에는 객체가 없지만이 방법을 간단히 수행하는 것만 으로이 "B"가이 방법을 호출하는 객체 창에 할당됩니다.
var ObjectName2 = ClassName ( "B");
경고 (Window.Value); // 대화 상자 b
따라서 JS의 모든 기능은 동일하지만 사용은 다를 수 있습니다 (객체 구성 또는 프로세스 실행에 사용됨).
초기화가 무엇을하고 있는지 테마로 돌아가 봅시다.
코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사하십시오.
var class = {
작성 : function () {
return function () {
this.initialize.apply (this, arguments);
}
}
}
var a = class.create ();
이 코드는 기능 사본을 A로 구성하는 것이며이 기능은 다음과 같습니다.
코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사하십시오.
기능 () {
this.initialize.apply (this, arguments);
}
후자의 방법은 생성자를 만드는 데 사용됩니다. 이 생성자를 사용하여 객체를 구성 할 때, 생성자의 초기화 변수의 초기 () 메소드는 Apply () 메소드를 실행하도록합니다. 이런 식으로 초기화 된 객체 (적용에 연락하는 방법)에 연락 할 수 있습니다.
그래서
코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사하십시오.
A. 프로토 타입 = {
초기화 : 함수 (v) {
값 값 = v;
}
showValue : function () {
경고 (this. value);
}
}
무슨 뜻입니까?
프로토 타입은 "프로토 타입"을 의미합니다. A는 함수 (), A. 프로토 타입은 기능의 변수이며 실제로 객체입니다. 이 객체는 어떤 방법을 가지고 있으므로, 함수에 의해 생성 된 객체는 어떤 방법을 생성합니까?
var a = new a ( 'helloord!');
a. showvalue (); // 대화 상자 Hellow!
따라서 A 객체는 초기화 된 방법을 가질뿐만 아니라, 생성자가있는 모든 객체는 구조가 호출 될 때 호출됩니다. '), 초기화는 Apply Method를 호출하기 위해 돌아 왔습니다. 이것은 초기화를 호출하는 방법입니다.
3. 전화 () 및 apply ()
apply ()를 공부하고 온라인으로 몇 가지 정보를 찾은 다음 자신의 연구를 결합하여 Call () 및 apply ()의 기능을 이해해 보겠습니다.功能基本一样, function (). call (object, {}, {} ……) 或者 function (). apply (object, [……]) 的功能就是对象 객체 调用这里的 funciton (), 不同之处是통화 매개 변수는 두 번째로 funciton으로 전달됩니다. Apply에는 두 개의 매개 변수 만 있으며 두 번째는 배열이며 함수에 전달되는 모든 매개 변수를 저장합니다.
this.initialize.apply (this, arguments);
무슨 뜻입니까?
첫 번째 이것은 이전 A 인 새 호출로 생성자를 호출 한 후 생성 된 객체를 말하며, 물론 두 번째는 동일한 객체를 참조해야합니다. 그런 다음이 문장은 (즉, a) 초기화 메소드를 호출하는 것입니다. 매개 변수는 인수 객체 (매개 변수의 배열 수)입니다.
그렇다면 초기화 메소드의 매개 변수를 전달하는 방법은 무엇입니까?
넷째, 인수 대상
이 코드는 모든 것을 설명 할 수 있습니다.
코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사하십시오.
기능 test () {
경고 (유형 인수);
for (var i = 0; i <arguments.length; i ++) {
경고 (인수 [i]);
}
}
시험 ( "1", "2", "3");
테스트 ( "A", "B");
실행 후 Alert (타입 인수)는 객체를 나타냅니다. 그런 다음 1, 2 및 3을 차례로 플레이하십시오. 인수는 기능을 호출하는 확실한 배열이라고 설명하십시오.
코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사하십시오.
var class = {
작성 : function () {
return function () {
this.initialize.apply (this, arguments);
}
}
}
인수는 Create가 반환하는 탄탄한 생성자 배열입니다.
var a = new a ( 'helloord!');
'HelloOword!'시점에서는 단단한 매개 변수 그룹이 있습니다 (하나만 존재하지만)가 적용 된 다음 초기화 기능으로 전달됩니다.