JavaScript는 동적 언어이며 런타임시 객체에 속성을 추가하거나 객체에 속성을 삭제할 수 있습니다.
코드 사본은 다음과 같습니다.
<html>
<헤드>
<script type = "text/javaScript">
/*
// 01. 객체를 정의하는 첫 번째 방법
var object = new Object ();
알림 (object.username);
//01.1 속성 사용자 이름을 추가합니다
개체 [ "username"] = "liujianglong";
//object.username="liujl ";
알림 (object.username);
//01.2 속성 사용자 이름을 삭제합니다
object.username; // username 속성이 객체 객체에서 삭제되었습니다.
알림 (object.username);
*/
// 02. 객체를 정의하는 두 번째 방법 - JavaScript에서 객체를 정의하는 가장 일반적인 방법
var object = {이름 : "Zhangsan", 나이 : 10, 섹스 : "Fale"};
경고 (Object.Name);
경고 (object.age);
경고 (Object.Sex);
</스크립트>
</head>
<body>
</body>
</html>
속성 이름 : 메소드 이름도 괜찮습니다. 함수 자체가 객체이기 때문입니다
자바 스크립트 배열 정렬
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<script type = "text/javaScript">
var array = [1,3,25];
///////////////////////////////
var compare = function (num1, num2) {
var temp1 = parseint (num1);
var temp2 = parseint (num2);
if (temp1 <temp2) {
반품 -1;
} else if (temp1 == temp2) {
반환 0;
}또 다른{
반환 1;
}
}
//array.sort(compare) ;//01. 함수 이름은 객체 참조입니다
//////////////////////////////
// 02. 익명 기능 방법////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Array.sort (함수 C (Num1, Num2) {
var temp1 = parseint (num1);
var temp2 = parseint (num2);
if (temp1 <temp2) {
반품 -1;
} else if (temp1 == temp2) {
반환 0;
}또 다른{
반환 1;
}
});
///////////////////////////////
경고 (배열);
</스크립트>
</head>
<body>
</body>
</html>
JavaScript에서 객체를 정의하는 몇 가지 방법 (JavaScript는 클래스 개념이없고 개체 만 있습니다)
첫 번째 방법 : 기존 객체를 기반으로 속성 및 메소드를 확장
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
// 01. 기존 객체를 기반으로 속성과 방법을 확장합니다
var object = new Object ();
Object.username = "Zhangsan";
Object.SayName = function (name) {
this.username = 이름;
경고 (this.username);
}
알림 (object.username);
Object.SayName ( "Lisi");
알림 (object.username);
</스크립트>
JavaScript에는 Java와 같은 클래스 개념이 없기 때문에이 방법은 제한 사항이 있습니다. 수업을 작성하면 새로운 속성과 방법으로 객체를 얻을 수 있습니다.
현재 Object2를 갖고 싶다면 위에서 언급 한 코드의 다른 사본 만 쓸 수 있습니다.
두 번째 방법 : 공장 방법
Java의 정적 공장 방법과 유사합니다.
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<script type = "text/javaScript">
// 객체 공장 방법
var createobject = function () {
var object = new Object ();
Object.username = "Zhangsan";
Object.Password = "123";
Object.get = function () {
Alert (this.username+","+Object.Password);
}
리턴 객체;
}
var obj1 = createobject ();
var obj2 = createobject ();
obj1.get ();
// 객체의 비밀번호를 수정합니다 2
obj2 [ "password"] = "123456";
obj2.get ();
</스크립트>
</head>
<body>
</body>
</html>
위 메소드에서 객체를 만드는 데는 단점이 있습니다 (각 객체는 메모리를 낭비하는 Get 메소드가 있으며, 개선 된 공장 메소드 (모든 객체는 GET 메소드를 공유 함)가 있습니다.
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<script type = "text/javaScript">
// 모든 객체에서 공유하는 메소드를 가져옵니다
var get = function () {
Alert (this.username+","+this.password);
}
// 객체 공장 방법
var createobject = function (username, password) {
var object = new Object ();
Object.username = 사용자 이름;
Object.Password = 비밀번호;
Object.get = get; // 참고 : 메소드 브래킷은 여기에 쓰여지지 않습니다
리턴 객체;
}
// 팩토리 메소드를 통해 객체를 만듭니다
var object1 = createObject ( "Zhangsan", "123");
var object2 = createObject ( "lisi", "345");
// get 메소드를 호출합니다
Object1.get ();
object2.get ();
</스크립트>
</head>
<body>
</body>
</html>
세 번째 방법 : 생성자 별 객체 정의
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<script type = "text/javaScript">
var get = function () {
Alert (this.username+","+this.password);
}
기능인 (사용자 이름, 비밀번호) {
// 첫 번째 코드 라인을 실행하기 전에 JS 엔진은 우리를 위해 객체를 생성합니다.
this.username = username;
this.password = 비밀번호;
this.get = get;
// 여기, 이전에 생성 된 객체를 반환하는 데 사용되는 숨겨진 반환 문이 있습니다 [이것은 공장 패턴과 다릅니다]
}
var person = 새로운 사람 ( "Zhangsan", "123");
person.get ();
</스크립트>
</head>
<body>
</body>
</html>
네 번째 방법 : 프로토 타입 방법에서 개체 생성
프로토 타입은 객체 객체의 속성이며 모든 사람 객체는 속성 프로토 타입을 가질 수 있습니다.
객체의 프로토 타입에 몇 가지 속성과 방법을 추가 할 수 있습니다.
단순히 프로토 타입을 사용하여 객체를 만드는 단순히 단순한 단점 : ① 매개 변수를 전달할 수 없으므로 객체가 생성 된 후에 만 값을 변경할 수 있습니다.
program 오류가 발생할 수 있습니다
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<script type = "text/javaScript">
기능인 () {
}
person.prototype.username = "Zhangsan";
person.prototype.password = "123";
person.prototype.getInfo = function () {
Alert (this.username+","+this.password);
}
var person1 = new Person ();
var person2 = 새로운 사람 ();
person1.username = "lisi";
person1.getInfo ();
person2.getInfo ();
</스크립트>
</head>
<body>
</body>
</html>
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<script type = "text/javaScript">
기능인 () {
}
person.prototype.username = new Array ();
person.prototype.password = "123";
person.prototype.getInfo = function () {
Alert (this.username+","+this.password);
}
var person1 = new Person ();
var person2 = 새로운 사람 ();
person1.username.push ( "Wanglaowu");
person1.username.push ( "wanglaowu2");
person.2.password = "456";
person1.getInfo ();
person2.getInfo ();
</스크립트>
</head>
<body>
</body>
</html>
프로토 타입을 사용하여 객체를 정의하면 더 이상 생성자의 속성에 초기 값을 할당 할 수 없으며 개체가 생성 된 후에 만 속성 값 만 변경할 수 있습니다.
다섯 번째 방법 : 프로토 타입 + 생성자를 사용하여 객체를 정의합니다 -------------
객체 사이의 속성은 서로 방해하지 않습니다.
객체간에 동일한 방법을 공유하십시오
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<script type = "text/javaScript">
// 프로토 타입 + 생성자 메소드를 사용하여 개체를 정의합니다.
기능인 () {
// 생성자의 속성 정의
this.username = new array ();
this.password = "123";
}
// 메소드는 프로토 타입에 정의되어 있습니다
person.prototype.getInfo = function () {
Alert (this.username+","+this.password);
}
var p1 = 새로운 사람 ();
var p2 = 새로운 사람 ();
p1.username.push ( "zhangsan");
p2.username.push ( "lisi");
p1.getInfo ();
p2.getInfo ();
</스크립트>
</head>
<body>
</body>
</html>
여섯 번째 방법 : 동적 프로토 타입 방법 -------- 권장 사용
생성자에서 모든 객체는 플래그 수량을 통해 메소드를 공유하고 각 객체에는 고유 한 속성이 있습니다.
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<script type = "text/javaScript">
var person = function (사용자 이름, 암호) {
this.username = username;
this.password = 비밀번호;
if (typeof person.flag == "undefined") {
경고 ( "호출");
person.prototype.getInfo = function () {
Alert (this.username+","+this.password);
}
person.flag = true;
}
}
var p1 = 새로운 사람 ( "Zhangsan", "123");
var p2 = 새로운 사람 ( "lisi", "456");
p1.getInfo ();
p2.getInfo ();
</스크립트>
</head>
<body>
</body>
</html>