Learning Javascript OOP II
3339 단어 JavaScriptprototypeoop
function foo() {
var i = 2;
// private function
function bar() {
i *= 2;
}
bar();
return i;
}
function foo() {
var i = 2;
// private function
function bar() {
i *= 2;
return i;
}
return bar();
}
var baz = foo(); // baz is now a reference to function bar.
baz(); // returns 4
baz(); // returns 8
baz(); // returns 16
var blat = foo(); // blat is another reference to bar.
blat(); // return 4
var Persion = function(name, age) {
var name;
this.setName(nameParam) {
name = nameParam;
}
}
언제 프로토타입 방식으로 방법을 정의해야 하는지:var Person = function(name, age) {
var name;
var age;
this.getName() {
return name;
}
this.getAge() {
return age;
}
};
Person.prototype = function() {
toString : function() {
return this.getName() + " is " + this.getAge() + " years old."
}
}
프로토타입 정의 방법은 개인 변수와 방법에 접근할 수 없고 프로토타입 정의 방법은 메모리에 한 개만 존재하며 특권 방법인 Privileged methods는 여러 개의 실례를 만든 후 메모리에 여러 개가 존재하여 성능을 떨어뜨린다.또한 사유 속성과 방법은 이불류로 중용할 수 없기 때문에 자류에서 방법이나 속성을 중용할 때 방법과 속성에 대한 작용역 제한은 폐쇄로 실현할 수 없다var Person = (function(){
// const variable(This variable won't be changed, so it's final.)
var EIGHTEEN = 18;
// private static variable
var personCount = 0;
// private static method
function isAdult(age) {
return age >= EIGHTEEN ? true : false;
}
// constructor
return function(nameParam, ageParam) {
// private instance variable
var name, age;
// public instance method(Privileged method)
this.setName = function(nameParam) {
name = nameParam;
};
this.getName = function() {
return name;
};
this.setAge = function(ageParam) {
if (isAdult(ageParam)) {
age = ageParam;
}
age = EIGHTEEN;
};
this.getAge = function() {
return age;
};
// init properties or do some about initializing work
personCount++;
this.setName(nameParam);
this.setAge(ageParam);
}
})();
// public static method for Person class
Person.doSomething = function() {
//TODO......
};
// Create Person instance
Person handy_wang = new Person("handy.wang", 18);
handy_wang.setName("Wang-Jiangshan");
handy_wang.setAge(24);
Person.doSomething();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.