JS 원형 디자인 모델 (4) 의 결함 (1)
7889 단어 수필
var Person = function () {
this.class='ddd';
this.toString=function(){};
};
Person.prototype.name = 'tlc';
Person.prototype.age = '25';
Person.prototype.sex = 'boy';
Person.prototype.sayInfo = function () {
console.info(this.name + "--" + this.age + "--" + this.sex)
};
원형 대상 에 속성 이나 방법 을 추가 할 때마다 Person. prototype 필드 를 다시 써 야 합 니 다. 이러한 쓰기 방법 은 너무 복잡 하기 때문에 Person. prototype 을 대상 에 게 가리 킬 수 있 습 니 다. 이 대상 에는 필요 한 속성 과 방법 이 포함 되 어 있 습 니 다.var Person = function () {
};
Person.prototype = {
name: 'tlc',
age: '19',
sex: 'boy',
sayInfo: function () {
console.info(this.name + "--" + this.age + "--" + this.sex)
}
};
그래서 원형 대상 의 constructor 지향 은 Person 이 아 닌 문제 가 발생 했 습 니 다. 상기 코드 는 원형 대상 을 다시 쓰 는 것 과 같 기 때문에 js 에서 함 수 를 만 들 때마다 원형 대상 을 만 들 기 때문에 상기 코드 후의 constructor 는 새로 만 든 대상 constructor 를 가리 키 고 있 습 니 다.var person1 = new Person();
console.log(person1.constructor == Person);//false
console.info(person1.constructor == Object);//true
constructor 속성 을 수 동 으로 추가 할 수 있 지만 이 속성 은 매 거 할 수 있 습 니 다. 이 속성 을 매 거 하지 않 으 려 면 define Property 방법 을 사용 한 후에 이 속성 을 매 거 할 수 없습니다.Person.prototype = {
constructor:Person,
name: 'tlc',
age: '19',
sex: 'boy',
sayInfo: function () {
console.info(this.name + "--" + this.age + "--" + this.sex)
}
};
var person1 = new Person();
console.log(person1.constructor == Person);//true
console.info(person1.constructor == Object);//false
Object.defineProperty(Person.prototype,'constructor',{
enumerable:false,
value:Person
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 디지털 처리 클래스 상용 방법 집합오늘 은 자바 의 디지털 처리 류 와 관련 된 내용 을 배 웠 습 니 다. 그 중에서 흔히 볼 수 있 는 방법 이 많 습 니 다. DecimalFormat 의 format () 과 apply Format () 방법 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.