객체 부분
객체 유형
객체는 모든 유형의 객체를 저장할 수있는 변형되지 않은 컬렉션이며 다른 모든 객체는이 객체에서 상속됩니다.
객체 생성에는 두 가지 유형이 있습니다. 하나는 새 연산자를 사용하고 다른 하나는 문자 그대로 표기법입니다.
1. 새 연산자를 사용하여 객체를 만듭니다
var obj = new Object (); // 대문자에주의를 기울이면 Object ()로 직접 쓸 수도 있습니다.
새 개체 () 메소드를 통해 새 객체를 생성하는 것은 문자 그럴 메소드 obj = {}과 동일합니다.
2. 문자 적 방법을 사용하여 생성 :
var obj = {이름 : 'trigkit4', Age : 21}; // 세미콜론은 추가하는 것이 가장 좋습니다.리터럴을 사용하여 객체 객체를 선언 할 때 객체 () 생성자가 호출되지 않습니다 (FF 제외)
object.prototype 객체
모든 생성자는 프로토 타입 객체를 가리키는 프로토 타입 속성을 가지고 있습니다.
Object.prototype.print = function () {console.log (this)}; var obj = new Object (); obj.print () // 객체인스턴스 OBJ는 객체의 특성과 메소드를 직접 상속합니다.
1. 객체는 단지 특별한 데이터입니다. 객체에는 속성과 방법이 있습니다. JavaScript는 객체 지향 언어이지만 JavaScript는 클래스를 사용하지 않습니다. JavaScript는 클래스 기반이 아닌 [프로토 타입] [1]을 기반으로합니다.
2. 속성 : 특정 객체와 제휴하는 가변입니다. 방법 : 특정 객체 만 호출 할 수있는 함수입니다.
3.js 객체는 속성 및 방법의 모음입니다. 메소드는 객체의 구성원 인 함수입니다. 속성은 객체의 구성원 인 값 또는 값 세트 (배열 또는 객체 형태)입니다.
4.js 객체는 생성자 함수를 기반으로합니다. 생성자 함수를 사용하여 새 개체를 생성 할 때 새 객체가 인스턴스화된다고 말할 수 있습니다. 속성은 생성자 함수 내부의 변수입니다.
생성자 함수를 사용하여 인스턴스화 된 객체 :
cat = 새로운 동물 ();
JavaScript는 객체 기반 언어이며, 거의 모든 것이 객체입니다. 그러나 구문에 클래스 (클래스)가 없기 때문에 진정한 객체 지향 프로그래밍 (OOP) 언어가 아닙니다.
<script type = "text/javaScript"> // 객체는 이름/값 쌍의 모음입니다. var browser = {// 객체는 Curly Braces : "Firefox", Kernel : "gecko"}; </script> // 객체의 속성에 액세스하는 "Firefox"Browser [ "Kernel"]/"Gecko"객체 (OBJCT)는 속성 모음이며 각 속성은 "이름/값 쌍"으로 구성됩니다. JS는 또한 특수 객체 인 배열을 정의하며, 이는 순서대로 번호가 매겨진 값 세트입니다.
JS는 또한 특수 객체를 정의합니다. 함수, 함수는 실행 가능한 코드가있는 객체입니다. 함수를 호출하여 코드를 실행하고 작동 결과를 반환합니다.
JS에는 클래스가 없지만 "프로토 타입 객체"라는 새 이름이 필요하므로 "클래스 == 프로토 타입 객체", JavaScript 클래스 쓰기 방법 (i)을 참조하십시오.
2. 클래스 (프로토 타입 객체)와 객체 (인스턴스)의 차이와 연결
1. 클래스 (프로토 타입 객체)는 추상적이고 개념적이며 사물의 유형을 나타냅니다.
2. 물체는 구체적이고 실용적이며 특정한 것을 나타냅니다.
3. 클래스 (프로토 타입 객체)는 객체 인스턴스를위한 템플릿이며 객체 인스턴스는 클래스의 개체입니다.
일반적인 오해는 숫자의 문자 값이 대상이 아니라는 것입니다. 이는 부동 소수점 수치 수치의 일부로 포인트 연산자를 구문 분석하려는 JavaScript 파서의 버그 때문입니다.
숫자의 문자 값을 객체처럼 보이게하기위한 많은 해결 방법이 있습니다.
2..TOSTRING (); // 두 번째 점은 정상적으로 구문 분석 할 수 있습니다
2.TOSTRING (); // 점 앞에 공간에주의를 기울입니다
(2) .ToString (); // 2가 먼저 계산됩니다
속성을 삭제합니다
속성을 삭제하는 유일한 방법은 삭제 연산자를 사용하는 것입니다. 속성을 정의되지 않은 또는 null로 설정하면 속성이 실제로 삭제되지 않지만 단순히 속성과 값 간의 연관성을 제거합니다.
JavaScript 객체 지향의 세 가지 주요 기능
캡슐화 : 내부 구현이 고려되지 않으며 기능적 사용 만 고려됩니다.
상속 : 기존 객체에서 새 개체를 상속합니다
다형성 : 소위 다형성은 다른 상황에서 참조하는 여러 상태를 말합니다.
1. 포장
캡슐화는 동일한 범주에 속하는 물건의 공통성 (속성 및 행동 포함)을 쉽게 사용하기 위해 클래스로 그룹화하는 것을 의미합니다. 예를 들어, 인간은 다음과 같은 방식으로 캡슐화 될 수 있습니다.
사람들{
나이 (속성 1)
높이 (속성 2)
성별 (속성 3)
일을하십시오 (행동 중 하나)
걷기 (행동 2)
말하기 (Act 3)
}
캡슐화의 이점 :
캡슐화는 내부 데이터의 무결성을 보호합니다.
캡슐화는 물체의 리팩토링을 더 쉽게 만듭니다.
모듈 사이의 커플 링을 약화시키고 객체의 재사용 성을 향상시킵니다.
네임 스페이스 충돌을 피하는 데 도움이됩니다.
다음 예를 참조하십시오.
<script type = "text/javaScript"> var boy = {}; // 빈 객체를 만듭니다 .name = "Xiao Ming"; // 소년을 할당하십시오. var girl = {}; girl.name = "Xiaohong"; girl.age = 10; </스크립트>이것은 가장 간단한 캡슐화이며 한 객체의 두 가지 속성을 캡슐화합니다. 그러나이 작문 방법에는 두 가지 단점이 있습니다. 하나는 더 많은 인스턴스를 생성하면 글을 쓰는 것이 매우 번거 롭다는 것입니다. 다른 하나는 인스턴스와 프로토 타입 사이에 어떤 연결이 있는지 알 수있는 방법이 없다는 것입니다.
생성자 모드
프로토 타입 객체에서 인스턴스를 생성하는 문제를 해결하기 위해 JavaScript는 생성자 패턴을 제공합니다.
소위 "생성자"는 실제로 일반적인 기능이지만이 변수는 내부적으로 사용됩니다. 생성자에 새 연산자를 사용하면 인스턴스를 생성 할 수 있으며이 변수는 인스턴스 객체에 바인딩됩니다.
예를 들어, 소년과 소녀의 프로토 타입 객체는 지금 다음과 같이 쓸 수 있습니다.
<script type = "text/javaScript"> 기능인 (이름, age) {this.name = name; this.age = age; } </스크립트>이제 인스턴스 객체를 생성 할 수 있습니다.
<script type = "text/javaScript"> var boy = new Person ( "Xiao Ming", 12); var girl = 새로운 사람 ( "Xiao Hong", 10); 경고 (Boy.Name); // Xiao Ming Alert (Boy.age); // 12 </script>
현재 소년과 소녀는 자동으로 생성자 속성을 포함합니다.
경고 (Boy.constructor == Person); //진실
경고 (girl.constructor); // 생성자 코드의 전체 문자열을 출력하고 직접 시도하십시오.
프로토 타입 패턴 JavaScript는 각 생성자가 다른 객체를 가리키는 프로토 타입 속성을 가지고 있다고 규정합니다. 이 객체의 모든 속성과 방법은 생성자의 인스턴스에 의해 상속됩니다.
이는 프로토 타입 객체에서 변경되지 않은 속성과 메소드를 직접 정의 할 수 있음을 의미합니다.
<script type = "text/javaScript"> 기능인 (이름, age) {this.name = name; this.age = age;} person.protype.type = "human"; person.protype.eat = function () {alert ( "eat 쌀");} </script>그런 다음 인스턴스를 생성합니다.
<script type = "text/javaScript"> var boy = new Person ( "Xiao Ming", "12"); var girl = new Person ( "Xiao Hong", "10"); Alert (boy.type); // human boy.eat (); eat </script>
이때, 모든 인스턴스의 유형 속성 및 eat () 메소드는 실제로 동일한 메모리 주소이며 프로토 타입 객체를 가리키므로 작동 효율을 향상시킵니다.
경고 (boy.eat == girl.eat); //진실
프로토 타입 속성은 객체가 확장되는 생성자 함수를 지정하는 내장 속성입니다.
다음 코드는 CAT 객체의 프로토 타입 속성 인 동물 생성자 함수에 새 속성 크기를 추가합니다. 프로토 타입 특성을 사용하면 동물 생성자 기능을 확장하는 모든 물체는 크기 속성에 액세스 할 수 있습니다.
Cat = New Animal ( "고양이", "Meow", "Walk/Run"); cat.prototype.size = "Fat";
이 경우 모든 동물 물체의 크기 속성은 "지방"입니다. 프로토 타입은 새로운 객체 인스턴스로 기본적으로 기본적으로 나타납니다. 여전히 객체이므로 새로운 속성을 객체에 추가 할 수 있습니다. 마찬가지로 스타일은 JavaScript의 객체입니다. 스타일 후에 속성을 계속 추가 할 수도 있습니다.
<script type = "text/javaScript">/*개인 클래스 정의*/function person (_name, _age, _salary) {// 개인 클래스의 공개 속성, 클래스의 공개 속성은 다음과 같이 정의됩니다. // 개인 클래스의 비공개 속성, 클래스의 개인 속성은 다음과 같이 정의됩니다. "var attribute name"var age = _age; var 급여 = _salary; // 개인 클래스의 공개 방법 (권한있는 방법)을 정의하면 클래스의 공개 메소드는 다음과 같이 정의됩니다.객체가 특정 속성을 찾으면 먼저 자체 속성을 가로 지릅니다. 그렇지 않다면 [[[프로토 타입]]에서 참조 된 객체를 계속 찾습니다. 그렇지 않다면 [[프로토 타입]].
간단히 말해서, 객체의 [[프로토 타입]]을 통해 다른 객체에 대한 참조를 저장 하고이 참조를 통해 속성을 검색하는 것입니다. 이것은 프로토 타입 체인입니다.
널 객체
변수에 널 값을 할당하는 JS의 기능은 다음과 같습니다.
널 포인터를 할당하면이 변수가 객체를 저장할 준비가되어 있음을 쉽게 이해할 수 있습니다. 잘못된 것을 조정하는 것도 편리합니다
글로벌 창 객체
JavaScript의 모든 글로벌 기능 또는 변수는 창의 속성입니다.
자체 객체는 창 객체와 정확히 동일합니다. 자아는 일반적으로 그것이 현재 형태인지 확인하는 데 사용됩니다.
창의 주요 주요 객체는 다음과 같습니다.
자바 스크립트 문서 개체
JavaScript 프레임 객체
JavaScript 히스토리 객체
자바 스크립트 위치 개체
JavaScript Navigator 객체
JavaScript 화면 객체
몇 가지 일반적인 방법
valuef () 메소드 : 지정된 개체의 원래 값을 반환합니다.
split () 메소드는 문자열을 문자열 배열로 나누고이 배열을 반환합니다.
indexof () 메소드는 문자열에서 지정된 문자열 값의 첫 번째 발생을 반환합니다.
substring () 메소드는 지정된 두 개의 첨자 사이의 문자열에서 문자를 추출하는 데 사용됩니다.
Substr () 메소드는 Startpos 위치에서 시작하여 지정된 문자열 수를 문자열에서 추출합니다.
join () 메소드는 배열의 모든 요소를 문자열에 넣는 데 사용됩니다.
ArrayObject.join (Delimiter)
Reverse () 메소드는 배열에서 요소의 순서를 역전시키는 데 사용됩니다.
Slice () 메소드는 기존 배열에서 선택한 요소를 반환합니다.
물체 문자 그대로
객체 리터럴은 다음과 같이 다수의 속성을 만드는 데 사용되는 프로세스입니다.
<script type = "text/javaScript"> var Company = {이름 : "Microsoft", 연령 : 39, 직원 : 99000, CEO : "Nadella"}; </스크립트>속성과 속성 값은 콜론으로 분리된다는 점에 주목해야합니다 (:); 다중 속성은 쉼표로 분리됩니다 (,). 문자 그대로의 객체는 또한 방법을 정의 할 수 있습니다. 이 객체의 속성에 기능을 작성하십시오. 이것은 익명 기능입니다. 당신은 그것을 호출하려면 메소드 이름 () 만 작성하면됩니다.
<script type = "text/javaScript"> var dog = {이름 : "husky", age : 2, run : function () {return "123";}} alert (dog.run ()); // dog.run을 입력하면 그 뒤에있는 기능 부분에 대한 코드가 팝업됩니다 </script>기본 값 유형 래퍼
JS에는 숫자, 문자열, 부울, 널 및 정의되지 않은 5 가지 기본 값 유형이 있습니다. 널 및 정의되지 않은 것을 제외하고 다른 세 가지에는 소위 기본 포장 물체가 있습니다. 내장 된 생성자 번호 (), String () 및 boolean ()을 사용하여 래퍼 객체를 만드는 데 사용할 수 있습니다.
var num = new number (10); console.log (num); // Object Object () 메소드 개체 () // 빈 객체 객체를 반환 (undefined) // 빈 개체 객체를 반환합니다 (1) // 새 번호와 동등한 객체 ( 'foo') 객체 ( 'foo')와 동일합니다 ( 'foo') // 새로운 숫자와 동일합니다 ( 'foo'). boolean (true) 객체 ([]) // 원래 배열 객체 ({})를 반환합니다 ({}) // 원래 객체 객체를 반환합니다 (function () {}) // 원래 함수를 반환합니다.배열 부분
1. 객체
배열 개체 : 모든 데이터 유형의 배열 생성을 지원합니다.
ArrayoBj = New Array ()
ArrayoBj = 새로운 배열 ([size])
ArrayObj = new Array ([element0 [, element1 [, ... [, elementn]]]))))
정의 : var arr = [2,3,45,6]; var arr = 새로운 배열 (2,4,5,7)
코드가 짧기 때문에 둘 사이의 정의에는 차이가 없습니다.
배열 및 객체 리터럴 사용 : var atest = []; 배열을 만들 때 배열 리터럴을 사용하는 것이 좋습니다. 마찬가지로, 물체 리터럴을 사용하여 공간을 절약 할 수 있습니다. 다음 두 줄은 동일하지만 물체 리터럴을 사용하여 더 짧습니다.
var otest = 새로운 객체; // var otest = {}를 사용하지 않도록하십시오. // 최선의 선택 또는 var 0Test = [];트래버스 트래버스 어레이의 최상의 성능을 달성하기 위해 고전적인 루프를 사용하는 것이 좋습니다.
var list = [1, 2, 3, 4, 5, ...... 10000000]; for (var i = 0, l = list.length; i <l; i ++) {console.log (list [i]);}위의 코드에는 처리가 있으며, 이는 L = list.length를 통해 배열의 길이를 캐시하는 것입니다.
배열 생성자
Array의 생성자는 인수를 처리하는 방법과 관련하여 약간 모호하기 때문에 배열의 문자 구문을 사용하여 배열을 생성하는 것이 좋습니다.
따라서 다음 코드는 혼란 스럽습니다.
새로운 배열 (3, 4, 5); // 결과 : [3, 4, 5]
새 배열 (3) // 결과 : [],이 배열의 길이는 3입니다.
배열 생성자를 사용하여 새 배열을 생성하지 마십시오. 배열의 문자 그대로 구문을 사용하는 것이 좋습니다. 그들은 짧고 간결하여 코드의 가독성을 증가시킵니다.
배열 배열의 속성
배열 배열의 세 가지 속성 : 길이 속성, 프로토 타입 속성, 생성자 속성
1. 길이 속성
길이 속성은 배열의 길이, 즉 그 안의 요소 수를 나타냅니다. 배열의 인덱스는 항상 0에서 시작하기 때문에 배열의 상한 및 하한은 각각 0과 길이 -1입니다. 대부분의 다른 언어와 달리 JavaScript 배열의 길이 속성은 변동성이있어 특별한주의가 필요합니다.
2. 프로토 타입 속성
객체 유형 프로토 타입에 대한 참조를 반환합니다. 프로토 타입 속성은 객체에 일반적입니다.
배열 배열 개체의 경우 다음 예제를 사용하여 프로토 타입 속성의 목적을 설명하십시오.
배열 객체에 메소드를 추가하여 배열의 최대 요소 값을 반환합니다. 이렇게하려면 함수를 선포하고 array.prototype에 추가하여 사용하십시오.
함수 array_max () {var i, max = this [0]; for (i = 1; i <this.length; i ++) {if (max <this [i]) max = this [i]; } return max; } array.prototype.max = array_max; var x = 새로운 배열 (1,2,3,4,5,6); var y = x.max ();이 코드가 실행 된 후 y는 배열 x 또는 6의 최대 값을 저장합니다.
3. 구성체 속성
객체의 생성을 나타내는 함수. 설명 : 생성자 속성은 프로토 타입이있는 모든 객체의 구성원입니다. 여기에는 글로벌 및 수학 개체를 제외한 모든 jscript 기본 객체가 포함됩니다. 생성자 속성은 특정 객체 인스턴스를 구성하는 함수에 대한 참조를 보유합니다.
예를 들어:
x = 새 문자열 ( "hi"); if (x.constructor == string) // 프로세스 (조건은 true). // 또는 function myfunc {// func. } y = 새로운 myfunc;if (y.constructor == myfunc) // 프로세스 (조건은 참).
배열 :
y = 새로운 배열 ();
배열 객체 메소드
정렬 () 메소드
문법
ArrayObject.sort (Sortby)
Sortby 선택 사항. 정렬 순서를 지정합니다. 기능이어야합니다.
var arr = [11,2,28,4,5,1];
Console.log (arr.sort ()); // return [1, 11, 2, 28, 4, 5]
여기 11과 28이 정렬되지 않은 이유는 무엇입니까? 매개 변수가없는 정렬은 문자 인코딩 순서로 정렬되기 때문입니다.
그렇다면 배열 요소를 작은 것에서 큰 것으로 정렬하려면 어떻게해야합니까? 다음 코드를보십시오.
var arr = [11,2,28,4,5,1]; console.log (arr.sort (함수 (a, b) {return ab; // return [1, 2, 4, 5, 11, 28]));다른 기준으로 정렬하려면 두 값을 비교 한 비교 함수를 제공 한 다음 두 값의 상대 순서를 나타내는 숫자를 반환해야합니다. 비교 함수에는 두 개의 매개 변수 A와 B가 있어야하며 반환 값은 다음과 같습니다.
A가 B보다 작 으면 A는 정렬 된 배열에서 B 앞에 나타나야하며 0보다 작은 값이 반환됩니다.
A가 B와 같으면 0을 반환하십시오.
A가 B보다 크면 0보다 큰 값이 반환됩니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.