javascript - 페이지 - 팝업 타이틀 바꾸기




Javascript의 거의 모든 것이 객체입니까? (3)

많은 JavaScript 소개에서이 내용을 많이 읽었습니다. 나는 그것을 이해하지 못한다. 나는 항상 객체를 메서드와 속성을 가진 무언가로 생각합니다. 배열은 키 값 쌍을 가지고 있기 때문에 이해합니다. "문자열"또는 "숫자"또는 "함수"는 어떻습니까? 위에 열거 된 것들은 나와 같은 기능인 것처럼 보입니다. 이것은 당신이 무언가를 입력한다는 것을 의미합니다. 당신은 실제로 액세스 속성이나 아무것도 얻지 못합니다. 배열이나 객체 목록에 도트 표기법이 없습니다.

누구도 해당 메서드 및 속성에 액세스하는 도트 표기법을 사용하여 이러한 각각의 예제를 코딩합니까? JavaScript에 대해 배우기 시작한 이래로 객체 정의가 제한적이라고 생각합니다 ...


맞습니다. 자바 스크립트에서는 거의 모든 것이 객체입니다. 그러나 이러한 객체는 자바, C ++ 또는 기타 일반 언어에서 보는 것과는 조금 다릅니다. JS의 객체는 단순히 키 - 값 쌍이있는 해시 맵입니다. 키는 항상 문자열이며, 값은 문자열, 정수, 부울, 함수, 다른 객체 등을 포함하는 모든 값이 될 수 있습니다. 따라서 다음과 같이 새 객체를 만들 수 있습니다.

var obj = {}; // this is not the only way to create an object in JS

새로운 키 - 값 쌍을 추가하십시오.

obj['message'] = 'Hello'; // you can always attach new properties to an object externally

또는

obj.message = 'Hello';

마찬가지로이 객체에 새 함수를 추가하려면 다음과 같이하십시오.

obj['showMessage'] = function(){
    alert(this['message']);
}

또는

obj.showMessage = function() {
    alert(this.message);
}

이제이 함수를 호출 할 때마다 메시지가있는 팝업이 표시됩니다.

obj.showMessage();

배열은 단순히 값 목록을 포함 할 수있는 객체입니다.

var arr = [32, 33, 34, 35]; // one way of creating arrays in JS

모든 객체를 사용하여 값을 저장할 수 있지만 배열을 사용하면 각 객체에 키를 연결하지 않고 저장할 수 있습니다. 따라서 색인을 사용하여 항목에 액세스 할 수 있습니다.

alert(arr[1]); // this would show 33

배열 객체는 JS의 다른 객체와 마찬가지로 다음과 같은 속성을가집니다.

alert(arr.length); // this would show 4

자세한 내용은 John Resig의 Pro Javascript Techniques를 강력히 추천합니다.


모든 것이 자바 스크립트의 객체는 아닙니다. JavaScript에는 프리미티브와 객체가 있습니다. null, undefined, string, number, boolean 및 symbol의 6 가지 기본 요소가 있습니다. 액세스 할 수있는 속성 및 기능 때문에 모든 것이 객체로 작동하는 것처럼 보일 수 있습니다. 예를 들어,

var stringvar="this string";
typeof stringvar; // "string"
stringvar.length; //11

이제 "stringvar"는 기본 유형 인 문자열 유형이므로 property.length에 액세스 할 수 없어야합니다. Boxing.Boxing은 원시 유형이 Object 유형으로 변환되는 프로세스이기 때문에 수행 할 수 있습니다. 이러한 객체 유형 또는 객체 래퍼는 프리미티브 값으로 수행해야 할 수있는 몇 가지 공통 연산이 있다는 관점에서 생성됩니다.이 객체 유형 또는 객체 래퍼는 유용한 메소드와 속성을 포함하며 프리미티브에 프로토 타입이 연결되어 있습니다. 객체에 관한 한, 키 값 쌍을 모든 객체, 심지어 배열에 추가 할 수 있습니다.

var arr=[1,2,3];
arr.name="my array";
arr;  //[1,2,3,name:'my array']

배열의 네 번째 요소가 "name : 'my array'"라는 것을 의미하지는 않습니다. "name"은 점 표기법 (arr.name) 또는 대괄호 표기법 (arr [ "name"])으로 호출 할 수있는 속성입니다. .


MAIN 코드 단위 (객체, 함수, 배열)가 JavaScript 객체이기 때문에 "JavaScript에서 ALMOST 모든 것이 객체입니다"라는 문장이 정확합니다.
JavaScript 코드는 9 개의 다른 단위와 1 (다중)을 사용합니다.
- 01. 배열
- 02. 부울
- 03. 기능
- 04. null
- 05. 번호
- 06. 개체
- 07. 정규 표현식
- 08. string
- 09. 정의되지 않음
- 10. 복수

하지만 JavaScript 개체 :
- 다른 객체 지향 언어에서 '객체'와 같은 생물이 아닙니다.
- 이름 - 값 쌍의 모음입니다.
- 모두 창조의 기능을 가진다 (생성자).
- 모두 생성자의 프로토 타입 객체의 멤버를 INHERIT하지 않으며 프로토 타입입니다.
- 모든 기능은 객체이지만 모든 객체가 기능은 아닙니다 .
- 기능에는 범위, 객체가 없습니다 (제 생각에는 설계 상 결함이 있습니다).
개체, 함수, 배열, 문자열, ... 첫 번째 대문자로 함수입니다 !!!
- 공통점보다 JS 객체와 기능의 차이점이 더 중요합니다.
- JS에서 이름 '인스턴스'는 인스턴스가 일반 개념의 속성을 상속하는 지식 이론에서 '인스턴스'라는 이름과 다른 의미를 갖습니다. JS에서는 해당 생성자 만 나타냅니다. JavaScript는 'class-based-inheritance'ool (java)에서 'instance'라는 이름을 얻었습니다.이 객체는 클래스의 속성을 상속하기 때문에 적절한 이름입니다.
JS- 키워드 'instanceof'의 더 좋은 이름은 'objectof'입니다.

JS 함수는 다음과 같은 이유로 JS 객체 입니다.
1) JS 객체와 같은 멤버를 가질 수 있습니다.

    > function f(){}
    undefined
    > f.s = "a string"
    "a string"
    > f.s
    "a string"

2) 그들은 모든 JS- 객체와 마찬가지로 constructor-function, Function 함수를가집니다.

    > (function f(){}) instanceof Function
    true

3) 모든 JS 객체로, 그들의 프로토 타입 객체는 그 생성자 프로토 타입과 동일합니다 :

    > (function f(){}).__proto__ === Function.prototype
    true
    > ({}).__proto__ === Object.prototype
    true
    > (new Object).__proto__ === Object.prototype
    true

4) 물론 JS-objects는 SPECIFIC JS 객체와 추가 속성을 가지고 있습니다. 프로그래밍 언어의 모든 함수처럼 JS 객체는 입력 및 출력 정보로 호출 (실행) 할 수 없다는 것입니다.

EVERYTHING 은 객체가 아닙니다. 예를 들어 리터럴 문자열에 멤버를 추가 할 수 없기 때문입니다.

    > var s = "string"
    undefined
    > s.s2 = "s2string"
    "s2string"
    > s.s2
    undefined




oop