함수 외부에 정의 된 변수는 글로벌 변수 여야합니다. 함수 내부에서 정의 된 변수, var가 선언되면 변수는 로컬 변수입니다. Var가 선언되지 않으면 변수는 전역 변수입니다.
1. 글로벌 및 로컬 변수 자바 스크립트 var global = "global"; test (); function test () {var local = "local"; document.writeln (Global); document.writeln (local);} document.writeln (global); document.writeln (local);2. 두 가지 유형의 쿠키
i) 지속적인 쿠키는 클라이언트의 하드 디스크에 저장됩니다.
ii) 답장 쿠키 : 클라이언트의 하드 디스크에 저장되지는 않지만 브라우저 프로세스의 메모리에 배치됩니다. 브라우저가 닫히면 응답 쿠키가 파괴됩니다.
3. JavaScript에서 함수는 객체입니다
4. JavaScript에는 메소드 개념 (함수) 과부하가 없습니다.
5. 기능 객체
JavaScript에는 함수 객체가 있으며 모든 사용자 정의 함수는 기능 객체 유형입니다. 함수 객체에서 허용되는 모든 매개 변수는 문자열 유형이고, 마지막 매개 변수는 실행될 기능 본체이며, 이전 매개 변수는 기능이 실제로 허용 해야하는 매개 변수입니다.
6. 암시 적 객체 인수
JavaScript에서는 각 함수에는 암시 적 객체 인수가 있으며 실제로 기능에 전달되는 매개 변수를 나타냅니다. arguments.length는 실제로 전달 된 매개 변수의 수를 나타냅니다.
7. 함수 이름. 길이
각 함수 객체에는 길이 속성이 있으며 함수가 허용하는 매개 변수 수를 나타냅니다. 기능의 주장과 다릅니다. arguments.length는 실제로 함수에 의해 허용되는 매개 변수 수를 나타냅니다.
8. JavaScript에는 5 가지 기본 데이터 유형이 있습니다
정의되지 않은, 널, 부울, 숫자 및 문자열. (참고 : JavaScript에서는 Char 데이터 유형이 없습니다)
정의되지 않은 데이터 유형에는 단 하나의 값이 있습니다 : 정의되지 않은;
NULL 데이터 유형에는 하나의 값 만 있습니다 : NULL;
부울 데이터 유형에는 두 가지 값이 있습니다 : True and False;
9. 연산자 타입
Typeof는 단술 연산자와 변수의 이름입니다. 변수의 데이터 유형을 얻는 데 사용됩니다. 반환 값은 정의되지 않은, 부울, 번호, 문자열 및 객체입니다.
10. JavaScript에서 함수가 반환 값을 선언하지 않으면 Undefined11, NULL 및 UNDEFINED 간의 관계를 반환합니다.
정의되지 않은 것은 실제로 NULL에서 파생됩니다. 예를 들어:
널과 정의되지 않은 관계
자바 스크립트
alert (undefined == null); // 브라우저가 true를 반환합니다
11. 강제 유형 변환
JavaScript에는 부울 (값), 숫자 (값), 문자열 (값)의 3 개의 캐스트가 있습니다.
12. 객체 객체
JavaScript에서는 모든 객체가 객체 객체에서 상속됩니다.
객체 객체
자바 스크립트
var object = new Object (); for (var v in object) {alert (v);}위의 코드에서 브라우저는 아무것도 인쇄하지 않기 때문에 객체 객체가 속성을 전달하지 않음을 의미하지는 않습니다. 다음 코드는 객체 객체의 속성을 열거 할 수 있는지 여부를 테스트합니다. 거짓이 반환되면 객체 객체의 속성을 열거 할 수 없음을 의미합니다.
객체 객체의 속성을 열거 할 수 없습니다
자바 스크립트
Alert (object.propertyisEnumerable ( "프로토 타입"));
브라우저에 잘못된 대화 상자가 나타나면 객체 객체의 속성을 열거 할 수 없음을 의미합니다.
다음으로, 창 객체의 속성을 열거 할 수 있는지 살펴 보겠습니다.
윈도우 객체의 속성을 열거 할 수 있습니다
자바 스크립트
for (var v in window) {console.log (v);}Chrome에서는 브라우저 디버깅 콘솔에 많은 속성이 인쇄되어 창 객체의 속성이 열거 될 수 있음을 나타냅니다.
13. JavaScript에서는 객체의 속성을 동적으로 추가하거나 객체의 속성을 동적으로 삭제할 수 있습니다.
객체의 속성을 동적으로 추가/제거합니다
자바 스크립트
var object = new Object (); alert (object.username); // undefined object.username = "zhangsan"; alert (object.username); // zhangsan object [ "password"] = "123"; alert (object.password); // delete object.username; // undefined.username = "zhangsan =";
14. JavaScript에서 객체를 정의하는 가장 일반적인 방법
객체를 정의하는 가장 일반적인 방법
자바 스크립트
var object = {username : "zhangsan", password : 12345}; alert (object.username); alert (object.password);15. 배열
배열 정의
자바 스크립트
// 메소드 1 var array = new Array (); array.push (1); array.push (2); array.push (3); Alert (array.length); // 메소드 2 (권장) var array = [1,25,4]; array.sort (); Alert (Array);
배열의 정렬 () 메소드를 호출하고 브라우저 1, 25, 4 인쇄는 우리가 기대하는 결과가 아닙니다.
JavaScript 배열의 정렬 메소드의 경우 먼저 컨텐츠를 문자열 (toString () 메소드라고 함)으로 정렬하고 문자열 순서대로 정렬합니다.
다음 방법은 우리가 기대하는 결과 (배열 크기별로 정렬)를 얻을 수 있습니다.
배열 정렬
자바 스크립트
함수 비교 (num1, num2) {var temp1 = parseint (num1); var temp2 = parseint (num2); if (temp1 <temp2) {return -1; } else if (temp1 == temp2) {return 0; } else {return 1; }} var array = [1,25,3]; array.sort (compare); Alert (Array);그런 다음 익명 기능으로 구현합니다.
익명 기능 정렬
자바 스크립트
var array = [1,25,3]; array.sort (function (num1, num2) {var temp1 = parseint (num1); var temp2 = parseint (num2); if (temp1 <temp2) {return -1;} else if (temp1 == temp2) {return 0;} else {return 1;}}); 경고 (배열);16. JavaScript에서 객체를 정의하는 5 가지 방법 (JavaScript의 클래스 개념이없고 개체 만) i) 기존 객체를 기반으로 속성 및 메소드를 확장합니다.
기존 객체를 기반으로 속성과 방법을 확장합니다
자바 스크립트
var object = new Object (); // 이름 Attribute Object.name = "Zhangsan"; // SayName 메소드 추가 객체를 추가합니다 .SayName = function (name) {this.name = name; Alert (this.name);}; object.sayname ( "Kyle"); // SayName 메소드를 호출하면 이름 속성이 Kyle로 수정되고 브라우저는 Kyle을 인쇄합니다.가장 간단한 방법은 사용하기 편리하지 않으며 일시적으로 물체를 요구하는 데 적합합니다.
ii) 공장에서 물체를 만듭니다
매개 변수가없는 공장 방법 :
자바 스크립트
// 팩토리 메서드 함수 createObject () {var object = new Object (); // 객체 개체를 만듭니다 .name = "zhangsan"; // 이름 속성 객체 객체를 추가하십시오 .Password = "123"; // 암호 속성 객체를 추가합니다. }; return 객체; //이 객체를 반환} var 객체 1 = createobject (); // createobjec factory method a object1var object2 = createobject (); // createobject factory 메서드를 호출하기위한 createobject factory 메소드를 createobject2object1.get ();매개 변수가있는 공장 방법 :
자바 스크립트
함수 createObject (이름, 암호) {var object = new Object (); Object.Name = 이름; Object.Password = 비밀번호; Object.get = function () {alert (this.name+","+this.password); }; return object;} var object1 = createobject ( "zhangsan", "123"); var 객체 = createobject ( "lisi", "456"); object1.get (); object2.get ();매개 변수와 매개 변수가없는 위의 두 공장 방법의 단점 :
객체가 생성 될 때마다 메모리에서 Get 메소드가 생성되며, 이는 메모리 낭비이며 성능에 영향을 미칩니다. 그리고 우리의 기대는 속성이 다른 두 가지 다른 객체를 만드는 것이지만 방법은 공유됩니다. 다음으로 CreateObject Factory 방법을 개선해야합니다.
공장 접근 개선 :
자바 스크립트
함수 get () {alert (this.name+","+this.password);} 함수 createObject (이름, 암호) {var object = new Object (); Object.Name = 이름; Object.Password = 비밀번호; Object.get = get; return object;} var object1 = createobject ( "zhangsan", "123"); var 객체 = createobject ( "lisi", "456"); object1.get (); object2.get ();생성 된 각 객체에 대해 get 메소드가 공유되도록 createobject 함수 외부의 get 메소드를 정의하십시오. 함수 객체가있는 각 객체 대신 여러 객체별로 함수 객체 공유를 만듭니다.
iii) 생성자 방법 객체를 생성하는 방법
매개 변수가없는 생성자 :
자바 스크립트
function person () {// 첫 번째 코드 라인을 실행하기 전에 JS 엔진은 우리를 위해 객체를 생성합니다 .name = "zhangsan"; this.password = "123"; this.getInfo = function () {alert (this.name+","+this.password); }; // 이전에 생성 된 객체를 반환하기위한 암묵적 반환 문이 있습니다 (공장과 다른 위치)} var p1 = new person (); p1.getInfo ();매개 변수가있는 생성자
자바 스크립트
기능인 (이름, 비밀번호) {this.name = 이름; this.password = 비밀번호; this.getInfo = function () {alert (this.name+","+this.password); };} var p1 = new Person ( "Zhangsan", "123"); var p2 = new Person ( "lisi", "456"); p1.getInfo (); p2.getInfo ();iv) 프로토 타입 (프로토 타입) 객체 생성
프로토 타입은 객체 객체의 속성입니다
원기
자바 스크립트
function person () {} person.prototype.name = "zhangsan"; person.prototype.password = "123"; person.prototype.getInfo = function (this.name+","+this.password);}; var p1 = new person (); var p2 = new person (); p1.name = "kyle"; // 객체가 생성 된 후 속성 p1.getInfo (); p2.getInfo ()를 변경합니다.단순히 프로토 타입을 사용하는 데는 두 가지 문제가 있습니다. 먼저 생성자의 속성에 초기 값을 할당 할 수 없으며 객체가 생성 된 후에 만 속성 값 만 변경할 수 있습니다.
원기
자바 스크립트
function person () {} person.prototype.name = new array (); person.prototype.password = "123"; person.prototype.getInfo = function (alert (this.name+","+this.password);}; var p1 = new person (); var p2 = new person (); p1.name.push ( "zhangsan"); p1.name.push ( "lisi"); p1.password = "456"; p1.getInfo (); p2.getInfo ()브라우저는 Zhangsan, Lisi, 456 및 Zhangsan, Lisi, 123을 인쇄합니다.
프로토 타입 방법을 사용하여 객체를 만들면 생성 된 모든 객체는 프로토 타입의 속성을 공유하고 객체가 속성을 변경하면 다른 객체에도 반영됩니다. 따라서 프로토 타입 방법을 단순히 사용하는 것은 불가능하며 다른 방법과 결합해야합니다. 우리는 다음에 계속 소개 할 것입니다.
프로토 타입 + 생성자를 사용하여 객체를 정의하십시오
자바 스크립트
function person () {this.name = new array (); this.password = "123";} person.prototype.getInfo = function () {alert (this.name+","+this.password);}; var p1 = new person (); var p2 = new person (); p1.name.push ( "zhangsan"); p2.name.push ( "lisi"); p1.getInfo (); p2.getInfo ();프로토 타입 + 생성자 방법을 사용하여 객체를 정의하십시오. 객체 사이의 속성은 서로를 방해하지 않으며 각 객체는 동일한 방법을 공유합니다. 이것은 더 나은 방법입니다.
v) 동적 프로토 타입 방법
자바 스크립트
기능인 () {this.name = "Zhangsan"; this.password = "123"; if (typeof person.flag == "undefined") {alert ( "호출"); person.prototype.getInfo = function () {alert (this.name + "," + this.password); } person.flag = true; }} var p1 = new person (); var p2 = new person (); p1.getInfo (); p2.getInfo ();동적 프로토 타입 방법에서 생성자에서 모든 객체는 플래그 수량을 통해 메소드를 공유하며 각 객체에는 고유 한 속성이 있습니다. 위의 코드가 처음으로 객체를 생성하면 먼저 판단 명령문을 사용하여 플래그 속성이 정의되었는지 확인합니다. 정의되지 않은 경우 프로토 타입을 통해 getInfo 메소드를 추가 한 다음 플래그를 true로 설정하십시오. 그런 다음 객체가 두 번째로 생성되면 IF 문이 거짓으로 판단되고 실행이 건너 뜁니다. 이것은 원하는 결과를 달성하고, 생성 된 객체 속성은 서로를 방해하지 않으며, 객체 방법이 공유됩니다.
17. JavaScript의 객체 상속 (5 가지 방법)
첫 번째 방법 : 대상 가장합니다
객체 상속을 모방합니다
자바 스크립트
// presiding class function parent (username) {this.username = username; this.sayhello = function () {alert (this.username); };} // 하위 클래스 함수 Child (사용자 이름, 암호) {// 다음 세 줄의 코드가 가장 중요합니다 .method = parent; this.method (사용자 이름); 이것을 삭제하십시오 .method; this.password = 비밀번호; this.sayworld = function () {alert (this.password); };} var p = new Parent ( "Zhangsan"); var c = 새로운 어린이 ( "Lisi", "123"); p.sayhello (); c.sayhello (); c.sayworld ()두 번째 방법 : call ()
상속의 두 번째 구현 방법, 호출 메소드, 호출 메소드는 함수 객체에 정의 된 메소드이므로 정의하는 각 함수에는이 메소드가 있습니다. 호출 메소드의 첫 번째 매개 변수는 두 번째 매개 변수에서 시작하여 함수에서 이로 전달되고 함수의 매개 변수에 하나씩 할당됩니다.
전화는 부모 클래스를 물려받습니다
자바 스크립트
함수 test (str) {alert (this.name+","+str);} var 객체 = new Object (); object.name = "Zhangsan"; // test.call은 테스트 function test.call을 호출하는 것과 동일합니다 (object, "html5war"); // 객체 할당다음으로 통화 방법을 사용하여 객체 상속을 구현합니다.
자바 스크립트
// presiding class function parent (username) {this.username = username; this.sayhello = function () {alert (this.username); };} // 서브 클래스 함수 Child (username, password) {parent.call (this, username); this.password = 비밀번호; this.sayworld = function () {alert (this.password); };} var p = new Parent ( "Zhangsan"); var c = new Child ( "lisi", "123"); p.sayhello (); c.sayhello (); c.sayworld ();세 번째 방법 : apply ()
적용은 상위 클래스를 상속합니다
자바 스크립트
// presiding class function parent (username) {this.username = username; this.sayhello = function () {alert (this.username); };} // 서브 클래스 함수 Child (username, password) {parent.apply (this, new Array (username)); this.password = 비밀번호; this.sayworld = function () {alert (this.password); };} var p = new Parent ( "Zhangsan"); var c = new Child ( "lisi", "123"); p.sayhello (); c.sayhello (); c.sayworld ();적용 메소드는 통화 방법과 매우 유사합니다. 적용 메소드는 또한 함수 객체에 정의 된 메소드이므로 정의하는 각 함수에는이 메소드가 있습니다.
적용 메소드와 호출 메소드 사이에는 차이가 있습니다 : parent.Apply (this, new Array (username)); 전달 된 두 번째 매개 변수는 배열이며, 호출 메소드는 일부 개별 데이터 매개 변수를 전달했습니다. 이 두 가지 방법은 좋고 나쁘다고 말할 수 없으며 특정 사용 시나리오에 따라 다릅니다.
네 번째 방법 : 프로토 타입 체인 방법 (매개 변수를 생성자에게 전달할 수 없음)
프로토 타입 체인 상속
자바 스크립트
function parent () {} parent.prototype.hello = "hello"; parent.prototype.sayHello = function () {alert (this.Hello);}; 기능 child () {} child.prototype = new Parent (); child.prototype.world = "World"; child.prototype.sayworld = function () {alert (this.world);}; var c = new Child (); c.sayhello (); c.sayworld ();단순히 프로토 타입 체인 방법을 사용하는 단점 : 매개 변수를 전달하는 방법이 없으므로 개체를 수정하기 전에 객체가 생성 될 때까지 기다릴 수 있습니다. 이 문제를 다른 방법과 함께 해결해 봅시다.
다섯 번째 방법 : 혼합 방법 (권장)
하이브리드 방법을 사용하여 객체 상속을 구현하십시오
자바 스크립트
함수 parent (hello) {this.hello = hello;} parent.prototype.sayhello = function () {alert (this.hello);} function child (hello, world) {parent.call (this, hello); this.world = world;} child.prototype = new Parent (); child.prototype.sayworld = function () {alert (this.world);} var c = new Child ( "Hello", "World"); c.sayhello (); c.sayworld ();기본 JavaScript 지식 포인트 (권장)의 위의 요약은 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.