구조 함수 모드 - 기초
function CreateJsPerson(name, age) {
var obj = {};
obj.name = name;
obj.age = age;
obj.writeJs = function () {
console.log('my name is ' + this.name + ', age is ' + this.age);
}
return obj;
}
var p1 = CreateJsPerson('zhangsan', 48);
p1.writeJs();
var p2 = CreateJsPerson('lisi', 20);
p2.writeJs();
함수 모드를 만드는 목적은 사용자 정의 클래스를 만들고 이 클래스의 실례를 만들기 위한 것이다.구조 함수 모드와 공장 함수 모드의 차이점:
createJsPerson()
.구조 함수 모드->new CreateJsPerson()
,new를 통해 실행된 후 우리의createJsPerson은 하나의 클래스입니다.함수가 실행하는 반환값(p1)은 CreateJsPerson의 인스턴스입니다.예를 들어 그룹을 만듭니다. var ary = []; //
var ary = new Array(); // ->
// ,ary Array
JavaScript에서 모든 클래스는 함수 데이터 형식입니다. 이것은 new를 통해 실행되고 하나의 클래스가 되지만 그 자체도 일반적인 함수입니다.JavaScript의 모든 인스턴스는 객체 데이터 유형입니다.
구조 함수 중의this는 구조 함수 모델에서 클래스(함수체 중), 출현한
this.xxx = xxx;
중의this는 현재 클래스의 실례이다. function CreateJsPerson(name, age) {
// p1 -> this
this.name = name; // -> p1.name = name;
this.age = age; // -> p1.age = age;
this.writeJs = function () {
console.log('my name is ' + this.name + ', age is ' + this.age);
}
//
}
var p1 = new CreateJsPerson('zhangsan', 20);
p1.writeJs(); // this -> p1, writeJS -> this -> p1
// ,
// return, res = undefined, CreateJsPerson this window
var res = CreateJsPerson('wangwu', 10); // this -> window
var p2 = new CreateJsPerson('li', 40);
p2.writeJs(); // this -> p2
p1과 p2는 모두 Create Js Person 같은 실례이기 때문에 write Js라는 방법을 가지고 있지만 서로 다른 실례 간의 방법은 다르다.클래스에서 실례에 추가된 속성
(this.xxx = xxx;)
은 현재 실례의 사유 속성에 속하고 실례와 실례 사이는 단독 개체이기 때문에 사유 속성 사이는 같지 않다.console.log(p1.writeJs === p2.writeJs); // -> false
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.