1. 개요
Java 언어로, 우리는 우리 자신의 클래스를 정의하고 사용하기 위해 이러한 클래스를 기반으로 객체를 만들 수 있습니다. JavaScript에서는 사용자 클래스 정의, HashTable 클래스 등과 같은 자체 클래스를 정의 할 수도 있습니다.
현재 JavaScript에는 날짜, 배열, Regexp, 문자열, 수학, 번호 등과 같은 일부 표준 클래스가 있으며, 이는 프로그래밍에 대한 많은 편의를 제공합니다. 그러나 복잡한 클라이언트 프로그램의 경우 이들은 충분하지 않습니다.
Java와 달리 Java2는 기본적으로 프로그래밍 요구를 충족시키는 많은 표준 클래스를 제공합니다. 그러나 JavaScript는 표준 클래스가 거의 없으며 많은 프로그래밍이 직접 구현해야합니다. 예를 들어, JavaScript에는 해시 가능한 테이블이 없으며 키 값을 처리하는 데 불편합니다.
따라서 나는 개인적으로 완전한 JavaScript 객체보기가 다음과 같아야한다고 생각합니다.
2. 기본 개념
1. 객체를 사용자 정의하십시오.
JS의 객체 확장 메커니즘에 따르면, 사용자는 JAVA 언어와 유사한 JS 객체를 사용자 정의 할 수 있습니다.
사용자 정의 객체에 해당하는 것은 날짜, 배열, 수학 등과 같은 JS 표준 객체입니다.
2. 프로토 타입
JS에서는 객체 속성과 메소드를 생성하는 방법이며 프로토 타입을 통해 개체에 새로운 속성과 메소드를 추가 할 수 있습니다.
프로토 타입을 사용하면 String 객체의 경우 JS 표준 객체에 새로운 속성과 메소드를 추가 할 수 있습니다.
Java와 같은 엄격한 프로그래밍 언어와 달리 런타임 동안 JS 객체에 새로운 속성을 동적으로 추가 할 수 있습니다.
세, 문법 규칙
1. 객체 생성 방법
1) 객체 이니셜 라이저 메소드
형식 : ObjectName = {property1 : value1, property2 : value2,…, propertyn : valuen}
속성은 물체의 속성입니다
값은 객체의 값이고 값은 문자열, 숫자 또는 객체 중 하나 일 수 있습니다.
예 : var user = {이름 : "user1", age : 18};
var user = {이름 : "user1", job : {급여 : 3000, 제목 : 프로그래머}
예를 들어 이러한 방식으로 초기화 할 수있는 메소드 : 예를 들어
var user = {name : "user1", age : 18, getName : function () {return this.name; }}다음은 속성 및 방법의 정의를 포함하여 생성자 방법의 초점으로 설명되며 생성자 방법을 참조하여 설명 할 것입니다.
2) 생성자 방법
생성자를 작성하고 새 방법을 통해 객체를 만듭니다. 생성자는 생성자 파라미터를 운반 할 수있었습니다
예를 들어:
기능 사용자 (이름, 나이) {this.name = 이름; this.age = age; this.canfly = false; } var use = 새 사용자 ();2. 객체 속성을 정의하십시오
1) JS에서는 개인 속성, 인스턴스 속성 및 클래스 속성의 객체에 대해 세 가지 유형의 속성을 정의 할 수 있습니다. Java와 유사하게 개인 속성은 객체 내에서만 사용할 수 있습니다. 인스턴스 속성은 객체의 인스턴스를 통해 참조해야하며 클래스 속성은 클래스 이름을 통해 직접 참조 할 수 있습니다.
2) 개인 속성 정의
개인 속성은 생성자 내에서만 정의되고 사용할 수 있습니다.
구문 형식 : var propertyname = value;
예를 들어:
기능 사용자 (Age) {this.age = Age; var ischild = age <12; islittlechild = ischild; } var user = 새 사용자 (15); Alert (user.islittLechild); // 올바른 방법 Alert (user.ischild); // 오류 : 객체 가이 속성이나 방법을 지원하지 않습니다.3) 인스턴스 속성을 정의하는 두 가지 방법이 있습니다.
프로토 타입 메소드, 구문 형식 : functionName.prototype.PropertyName = value
이 방법, 구문 형식 : this.propertyname = value, 다음 예제에 사용 된 위치에주의를 기울이십시오.
위의 값은 문자 생성, 숫자 및 대상 일 수 있습니다.
예를 들어:
function user () {} user.prototype.name = "user1"; user.prototype.age = 18; var user = 새 사용자 (); 경고 (user.age); ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――�3) 클래스 속성 정의
구문 형식 : functionName.propertyName = value
예를 들어:
function user () {} user.max_age = 200; user.min_age = 0; alert (user.max_age);JS 표준 개체의 클래스 속성을 참조하십시오.
번호 .max_value // 최대 숫자 값 math.pi // pi
4) 위의보다 공식적인 방법 외에도 속성을 정의하는 매우 특별한 방법, 구문 형식 : obj [index] = value가 있습니다.
예:
기능 사용자 (이름) {this.name = 이름; this.age = 18; 이 [1] = "OK"; 이 [200] = "Year"; } var user = 새 사용자 ( "user1"); 경고 (사용자 [1]);위의 예에서,이 [1]을 통해 연령 속성이 얻어지지 않으며,이 [0]을 통해 얻을 수 없다는 점에 유의해야합니다. 즉, 인덱스로 정의 된 인덱스는 인덱스 모드를 사용하여 참조해야하며 인덱스 모드로 정의되지 않아야하며 정상적인 방식으로 참조해야합니다.
3. 객체 방법을 정의하십시오
1) JS의 객체에 대해 정의 할 수있는 세 가지 유형의 방법이 있습니다 : 개인 메소드, 인스턴스 방법 및 클래스 메소드는 Java와 유사합니다.
개인 방법은 객체 내에서만 사용할 수 있습니다
인스턴스 방법을 사용하기 전에 인스턴스를 인스턴스화해야합니다.
클래스 방법은 클래스 이름을 통해 직접 사용할 수 있습니다
참고 :이 방법의 정의는 위에서 언급 한 인덱스 방법을 통해 수행 할 수 없습니다.
2) 개인 방법을 정의하십시오
개인 방법은 생성자 본체 내에서 정의되어야하며 생성자 본체 내에서만 사용할 수 있습니다.
구문 형식 : 함수 메소드 이름 (arg1,…, argn) {}
예를 들어:
기능 사용자 (이름) {this.name = 이름; 함수 getNamelength (namest) {return namest.length; } this.namelength = getnamelength (this.name); }3) 인스턴스 방법을 정의하면 현재 두 가지 방법을 사용할 수 있습니다.
생성자 외부에서 사용되는 프로토 타입 방법, 구문 형식 :
functionName.prototype.methodName = 메소드;
또는
functionName.prototype.methodName = function (arg1,…, argn) {};
생성자 구문 형식 내부에서 사용되는이 방법 :
this.methodname = 메소드;
또는
this.methodname = function (arg1,…, argn) {};
위의 구문 설명에서 메소드는 이미 외부에 존재하는 메소드입니다. MethodName에 의해 정의 될 객체의 메소드는 외부 메소드가 객체의 메소드에 직접 할당된다는 것을 의미합니다.
함수 형태 (arg1,…, argn) {}의 객체 메소드를 정의하는 것은 개발자가 마스터 해야하는 것입니다.
인스턴스 방법 정의의 일부 예 : 예 1
기능 사용자 (이름) {this.name = 이름; this.getName = getUserName; this.setName = setUserName; } function getUserName () {return this.name; } 함수 setUserName (이름) {this.name = 이름; }인스턴스 정의 방법의 일부 예 : 예제 2
기능 사용자 (이름) {this.name = 이름; this.getName = function () {reture this.Name; }; this.setName = function (newName) {this.name = newName; }; }인스턴스 정의 방법의 일부 예 : 예 3
기능 사용자 (이름) {this.name = 이름; } user.prototype.getName = getUserName; user.prototype.setName = setUserName (); 함수 getUserName () {return this.name; } 함수 setUserName (이름) {this.name = 이름; }인스턴스 정의 방법의 일부 예 : 예제 4
기능 사용자 (이름) {this.name = 이름; } user.prototype.getname = function () {return this.name; }; user.prototype.setname = function (newName) {this.name = newName; };4) 클래스 방법을 정의하십시오
클래스 방법은 생성자 외부에서 정의되어야하며 생성자 이름으로 직접 참조 할 수 있습니다.
구문 형식 :
functionName.methodName = 메소드;
또는
functionName.methodName = function (arg1,…, argn) {};
예:
기능 사용자 (이름) {this.name = 이름; } user.getMaxage = getUserMaxage; 함수 getUserMaxage () {return 200; }또는
user.getMaxage = function () {return 200;};
alert (user.getMaxage ());
4. 속성 및 방법의 참조
1) 가시성의 관점에서 :
개인 속성과 방법은 객체 내부에서만 참조 할 수 있습니다.
인스턴스 속성 및 메소드는 어디서나 사용할 수 있지만 객체에서 참조해야합니다.
클래스 속성과 방법은 어디서나 사용할 수 있지만 객체의 인스턴스에서는 참조 할 수 없습니다 (이것은 정적 멤버에 인스턴스에 의해 액세스 할 수있는 Java와 다릅니다).
2) 객체 수준에서 :
Java Beans에 대한 참조와 유사하게 깊은 참조를 할 수 있습니다.
몇 가지 방법 :
간단한 속성 : obj.propertyname
객체 속성 : obj.innerobj.propertyname
인덱스 속성 : OBJ.PropertyName [index]
더 깊은 참고 문헌의 경우 위의 것과 유사합니다.
3) 정의 방법에서 :
인덱스 방법을 통해 정의 된 속성은 인덱스 메소드를 통해 참조해야합니다.
비 인덱스 방법으로 정의 된 속성은 정상적인 방식으로 참조해야합니다.
또한 참고 : 인덱스 메소드를 통해 객체의 메소드를 정의 할 수 없습니다.
5. 속성 및 방법의 동적 첨가 및 삭제
1) 인스턴스화 된 객체의 경우 속성과 방법을 동적으로 추가하고 삭제할 수 있습니다. 구문은 다음과 같습니다 (객체 인스턴스가 OBJ라고 가정) :
객체 속성을 동적으로 증가시킵니다
obj.newpropertyname = value;
객체 방법을 동적으로 증가시킵니다
obj.newmethodname = method 또는 = function (arg1,…, argn) {}
개체 속성을 동적으로 삭제합니다
obj.propertyname을 삭제합니다
객체 방법을 동적으로 삭제합니다
obj.methodname을 삭제합니다
2) 예 :
기능 사용자 (이름) {this.name = 이름; this.age = 18; } var user = 새 사용자 ( "user1"); user.sister = "Susan"; alert (user.sister); // deper.sister를 통과합니다. ALERT (user.sister); // report 오류 : 객체는이 속성을 지원하지 않습니다. getmothername = function () {return "mary";} alert (user.getMotherName ()); // delete user.getMotherName을 통해 실행됩니다. Alert (user.getMotherName ()); //보고 오류 : 객체 가이 메소드를 지원하지 않습니다4, 요약
1. 사용자 정의 객체 메커니즘은 JS의 가장 매력적인 메커니즘 중 하나입니다. 이것은 C ++ 및 Java 프로그래머에게 적합합니다!
2. 객체를 만들 수있는 두 가지 방법은 객체 이니셜 라이저 및 생성자입니다.
3. 객체 속성 및 방법, 가시성이있는 제약 조건 및 가시성이 다른 속성 및 방법은 다르게 정의됩니다.
위의 기사는 JS 객체, 작동 속성 및 메소드를 기반으로하며,이 방법은 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.