프로토 타입 모드 설명
참고 : 프로토 타입 인스턴스를 사용하여 새로운 사용자 정의 가능한 객체를 복사하고 만듭니다. 새로 생성 된 객체의 경우 원래 객체를 만드는 특정 프로세스를 알 필요가 없습니다.
절차 : 프로토 타입 => New Protoexam => 새로운 물체에 복제;
관련 코드 사용 :
코드 사본은 다음과 같습니다.
기능 프로토 타입 () {
this.name = '';
this.age = '';
this.sex = '';
}
프로토 타입 .prototype.userinfo = function () {
반환 '개인 정보, 이름 :'+this.name+', age :'+this.age+', 성별 :'+this.sex+'<br />';
}
이제 두 개 이상의 개인 정보 콘텐츠가 필요합니다.
코드 사본은 다음과 같습니다.
var proto = 새로운 프로토 타입 ();
var person1 = object.create (proto);
person1.name = 'Xiao Ming';
person1.sex = 'male';
person1.age = 35;
person1.userinfo ();
//
var person2 = object.create (proto);
person2.name = 'xiaohua';
person.2.sex = '여성';
person2.age = 33;
personal2.userinfo ();
출력 반환 :
코드 사본은 다음과 같습니다.
개인 정보, 이름 : Xiao Ming, 나이 : 35, 성별 : 남성
개인 정보, 이름 : Xiaohua, 나이 : 33, 성별 : 여성
프로토 타입 모드는 일반적으로 복잡한 추상 구조에 사용되지만 컨텐츠 구성은 유사하며 추상 컨텐츠는 사용자 정의 할 수 있으며 새로운 생성은 요구 사항을 충족시키기 위해 원래 생성 객체에서 약간 수정하면됩니다.
Object. 지침을 만듭니다
1>. 정의 : 프로토 타입 객체를 지정하고 선택적 사용자 지정 속성을 포함 할 수있는 객체를 만듭니다.
2> object.create (proto [, Properties]); 선택 사항, 새 개체의 속성을 구성하는 데 사용됩니다.
코드 사본은 다음과 같습니다.
1. 프로토 : 새로운 객체의 프로토 타입을 만들려면 널 여야합니다. 이 프로토는 [신규] 또는 Object.prototype을 만들어 낸 경우에만 가치가 있습니다.
2. 속성 : 선택 사항, 구조 :
{
Propfield : {
값 : 'val'| {} | function () {},
쓰기 가능 : true | false,
열거 가능 : 참 | 거짓,
구성 가능 : true | false,
get : function () {return 10},
set : function (value) {}
}
}
사용자 정의 속성에는 다음 4 가지 속성이 있습니다.
값 : 사용자 정의 속성 값;
쓰기 가능 :이 항목의 값이 편집 가능한지, 기본값은 거짓이며, true, obj.prodfield를 할당 할 수 있습니다. 그렇지 않으면 읽기 전용;
열거 가능 : 열거 가능;
구성 가능 : 구성 가능;
또한 세트, 액세서 방법을 포함 할 수 있습니다.
그중에서도, [세트, get]는 가치와 쓸 수있는 동시에 나타날 수 없습니다.
1. 프로토 타입 객체 클래스 만들기 :
코드 사본은 다음과 같습니다.
함수 protoclass () {
this.a = 'protoclass';
this.c = {};
this.b = function () {
}
}
프로토 타입 방법 만들기 :
코드 사본은 다음과 같습니다.
protoclass.prototype.amethod = function () {
//this.a;
//this.b ();
이것을 반환합니다 .a;
}
사용 방법
1. protoclass.prototype으로 물체를 만듭니다.
코드 사본은 다음과 같습니다.
var obj1 = object.create (protoclass.prototype, {
foo : {value : 'obj1', 쓰기 가능 : true}
})
OBJ1은 프로토 클래스 프로토 타입 방법 Amethod 메소드를 갖는다;
코드 사본은 다음과 같습니다.
obj1.amethod ();
// 정의되지 않은 메소드는 액세스 할 수 있도록 출력되며 프로토 클래스 멤버에 액세스 할 수 없습니다.
그러나이 방법은 protoclass에서 a, b, c의 멤버 속성을 실행할 수 없습니다.
2. 인스턴스형 프로토 클래스를 프로토 타입으로 사용하십시오.
코드 사본은 다음과 같습니다.
var proto = 새로운 protoclass ();
var obj2 = object.create (proto, {
foo : {value : 'obj2'}
});
이러한 방식으로 생성 된 OBJ2는 모든 멤버 속성 A, B, C 및 Amethod 프로토 타입 방법을 갖는다; Foo 읽기 전용 데이터 속성을 추가합니다.
코드 사본은 다음과 같습니다.
obj2.a; // protoclass
obj2.c : // [Object]
obj2.b (); //
obj2.amethod (); // protoclass
obj2.foo; // obj2
3. 서브 클래스 상속 :
코드 사본은 다음과 같습니다.
함수 subclass () {
}
subclass.prototype = object.create (protoclass.prototype, {
foo : {value : 'subclass'}
});
subclass.prototype.submethod = function () {
이것을 반환합니다 .a || this.foo;
}
이 방법은 Protoclass의 amethod 방법에서 상속 될 수 있고 실행될 수 있습니다.
코드 사본은 다음과 같습니다.
var func = 새로운 서브 클래스 ();
func.amethod (); // 정의되지 않은, protoclass의 멤버 속성을 읽을 수 없습니다, A, B, C
func.submethod (); // 서브 클래스
서브 클래스가 프로토 클래스의 멤버 속성을 읽을 수 있으려면 서브 클래스를 변경해야합니다.
코드 사본은 다음과 같습니다.
함수 서브 클래스 ()
{
protoclass.call (this);
}
// 다른 코드;
이 방법은 프로토 클래스의 멤버 특성 및 프로토 타입 방법을 얻을 수 있습니다.
코드 사본은 다음과 같습니다.
var func = 새로운 서브 클래스 ();
func.amethod (); // protoclass
func.submethod (); // protoclass
또 다른 방법은 인스턴스형 프로토 클래스 객체를 서브 클래스의 프로토 타입으로 사용하는 것입니다.
코드 사본은 다음과 같습니다.
var proto = 새로운 protoclass ();
함수 subclass () {
}
subclass.prototype = object.create (proto, {
foo : {value : 'subclass'}
});
이러한 방식으로 서브 클래스가 인스턴스화 된 후 모든 프로토 클래스 속성 및 프로토 타입 방법을 얻고 읽기 전용 데이터 속성 FOO를 만들 수 있습니다.
코드 사본은 다음과 같습니다.
var func = 새로운 서브 클래스 ();
func.foo; //아강
func.a; // protoclass
func.b (); //
func.c; //[물체]
func.amethod (); // protoclass
4. 상속을 생성하는 다른 방법은 객체와 동일합니다.
코드 사본은 다음과 같습니다.
함수 subclass () {
this.foo = '서브 클래스'; //하지만 여기에서 읽고 쓸 수 있습니다
}
subclass.prototype = new protoclass ();
객체. 관련 지침을 만듭니다
Object.create는 새 개체를 만드는 데 사용됩니다. 객체 인 경우 프로토 타입은 NULL이며 그 효과는 new Object ()와 일치합니다. 또는 {};
함수 일 때 함수는 새 functionName과 동일합니다.
코드 사본은 다음과 같습니다.
// 1 개체
var o = {}
// 동등합니다
var o2 = object.create ({});
// 생성자는 동일합니다.
// -----------------------------------------------
function func () {
this.a = 'func';
}
func.prototype.method = function () {
이것을 반환합니다 .a;
}
var newfunc = new func ();
// [효과는 동일합니다]
var newfunc2 = object.create (object.prototype/*function.prototype || function () {}*/, {
A : {value : 'func', 쓰기 가능 : true},
방법 : {value : function () {return this.a;}}
});
그러나 NewFunc과 NewFunc2는 객체를 만드는 기능 참조에서 다릅니다.
newFunc은 함수 func () {...}, newFunc2는 함수 함수 {aviL}입니다.
코드 사본은 다음과 같습니다.
Object.create (Proto [, Propertiesfield]) :
프로토는 값이 필요하고 무일하게 될 수 있음을 나타냅니다. 설정되지 않으면 예외가 발생합니다.
프로토는 무감각, 즉 인스턴스화 된 값, 즉 새로운 가치입니다. JavaScript의 대부분의 객체에는 생성자 속성이 있으며, 이는 객체가 인스턴스화되는 기능을 나타냅니다.
Propertiesfield는 선택 사항이며 새로 생성 된 객체에 필요한 멤버 속성 또는 메소드를 설정합니다.