2016-06-07 1 views
1

질문 파트 1 : 속성이있는 개체 생성자를 만들었지 만 그 중 하나의 메서드 내에서 개체의 다른 속성을 정의 할 수 있는지 궁금합니다. 개체 프로토 타입 (메서드) 내에 속성을 정의 할 수 있습니까?

var Player = function(p1) { 
    this.property1 = p1; 
    this.property2 = 0; 
} 

다음, 내가 좋아하는, 방법에 this.property3을 정의 할 수 있습니다

:

Player.prototype.drawMethod = funtion() { 
    this.property3 = 1; 
} 

과 같은 접근이 :

var obj = new Player(true); 
if (obj.property3 ===1 && obj.property1 === 1) { 
    //code 
} else { 
    obj.property3 = obj.property2; 
} 

질문 2 부 : 또한, 것입니다 예를 들어, 속성을 함수로 사용할 수 있으며 다음과 같은 방법으로 호출 할 수 있습니다.

this.func = function() { 
    //code 
} 
... 
obj.func(); 
나는 그것의 하나에 개체의 또 다른 속성을 정의 할 수 있다면
+0

개체가 이미 javascript에 정의되어 있습니다. Object 생성자 함수의 버전으로 Object를 덮어 쓸 수 있는지 묻고 있습니까? 또는 당신이 당신의 기능을 위해 Object라는 이름을 골랐다는 것은 우연의 일치일까요? – user2263572

+0

개체에 속성을 추가 할 수 있으며 생성자가있는 개체에 특별한 것은 없습니다. – Barmar

+1

나는'if (obj.property3 === 1 === obj.property1) {'당신이 생각하는 것을 수행한다고 생각하지 않는다. 그것은 3 가지를 서로 비교하지 않는다. 그것은 if (obj.property3 === 1 && obj.property1 === 1)'이다. – Barmar

답변

0

나는 방법 예 당신이 할 수있는

는 것 궁금.

하지만 인스턴스가 가질 속성이 단일 한 점 (생성자)에서 보이지 않기 때문에 나쁜 스타일로 간주됩니다. 또한 엔진은이 경우를 최적화하지 않는 것으로 알려져 있습니다. 생성자가 생성하는 객체의 모양에 필요한 공간을 예약하고 인스턴스화 후에이를 변경하면 추가 작업이 필요합니다.

속성이 함수로 받아 들여지며 [메소드처럼] 호출 할 수 있습니까?

예.