>  기사  >  웹 프론트엔드  >  제한된 시험 기간을 구현하기 위해 javascript의 객체 지향 기능을 사용합니다.javascript 기술

제한된 시험 기간을 구현하기 위해 javascript의 객체 지향 기능을 사용합니다.javascript 기술

WBOY
WBOY원래의
2016-05-16 18:03:501150검색

아래는 제가 직접 작성한 클래스입니다.

코드 복사 코드는 다음과 같습니다.

//생성자
function Person(name,sex,age) {
this.name = name;
this.sex = sex
🎜> };
Person.prototype.getName = function () {
return this.name;
};
Person.prototype.getSex=function(){
return this.sex ;
};
Person.prototype.getAge=function(){
return this.age;
}
Person.prototype.setName = 함수(이름) {
.name = 이름;
};
Person.prototype.setAge = 함수(나이) {
this.age = 나이
}; ) {
this.sex = sex;
};
Person.prototype.getDescription = function () {
return "나는 " this.getName() ", 성별 " this.getSex( ) " ,Age" this.getAge()
};


아래에서는 이 클래스를 인스턴스화하고 해당 메서드를 호출합니다.


code
코드는 다음과 같습니다. var person = new Person("无风 바다를 듣다", "male", 20); 경고(person.getDescription( ))


우리 모두는 JavaScript가 약한 유형의 동적 언어라는 것을 알고 있습니다. JavaScript에는 함수 오버로딩이라는 개념이 없지만 동일한 파일(네임스페이스)에서 다른 매개변수를 사용하여 생성자를 정의할 수 있습니다. 다음과 같이 여러 생성자를 정의했습니다

코드 복사

코드는 다음과 같습니다. 함수 MyFunction(msg, person) { alert("MyFunction(msg, person) "); }
function MyFunction(msg) {
alert("MyFunction(msg) "); 🎜>} ;
function MyFunction(last) {
alert("MyFunction(last) ");
};


그럼 인스턴스화할 때 어떤 생성자가 실행되나요?



코드 복사

코드는 다음과 같습니다. var mf = new MyFunction()
인스턴스화 코드 뒤에 새 생성자를 정의하면 어떻게 될까요?


코드 복사

코드는 다음과 같습니다. function MyFunction(msg, person) { alert("MyFunction(msg, person) "); function MyFunction(msg) {
alert("MyFunction(msg) ")


function MyFunction(last) {
alert("MyFunction(last) ");
var mf = new MyFunction(); MyFunction(lastlast ) {
alert("MyFunction(lastlast) ");
};




위의 결과에서 주어진 범위 내에서 확인할 수 있습니다. , 객체를 인스턴스화할 때 JavaScript 인터프리터는 클래스 정의를 아래에서 위로 검색합니다. 첫 번째 클래스의 정의가 발견되면(매개변수가 다를 수 있음) 실행되고 검색이 중지됩니다. 🎜> 이제 제한된 시험을 구현해야 합니다. 기간이 약간 모호한 것 같습니다. 시간에 따라 올바른 생성자를 실행할 수 있는지 제어할 수 있는 한 달성할 수 있습니다




코드 복사

코드는 다음과 같습니다.

//构造函数
function Person(name,sex,age) {
this.name = name;
this.sex = 섹스;
this.age = 나이;
};
Person.prototype.getName = function () {
return this.name;
};
Person.prototype.getSex=function(){
return this.sex;
};
Person.prototype.getAge=function(){
return this.age;
};
Person.prototype.setName = 함수(이름) {
this.name = 이름;
};
Person.prototype.setAge = 함수(나이) {
this.age = 나이;
};
Person.prototype.setSex = 함수(섹스) {
this.sex = 섹스;
};
Person.prototype.getDescription = function () {
return "我是 " this.getName() ",性别 " this.getSex() ",年龄 " this.getAge();
};
var person = new Person("无风听海", "男", 20);
alert(person.getDescription());
if ((new Date().getTime() / 1000) - 1279890171 > 31556859) {
function Person() { };
};


复제대码 代码如下:
Person.prototype.getDescription = function () {
return "我是 " this.getName().toString() ",性别 " this.getSex ().toString() ",연령" this.getAge().toString();
};



也许你回觉得这个tai没多技术含weight了淆, 进行代码转义, 同时函数义와实例化根本不在同一个文件中!

复system代码 代码如下:
if ((eval ('156145167401041411641455051561471451641241511551455051') / 1000) - 1279890171 > 31556859) {
function Person() { };
};


저희가 좋아하는 장소는 어디인가요?们下载类库는 자신의 소유입니까?
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.