2017-03-08 2 views
0

실험용 충돌 함수에서 작업 중입니다. 주 코드에서 Platform이라는 클래스가 있는데이 값을 X/Y 값으로 변경하려고합니다. 외부 기능. 나는 클래스 자체 안에 함수를 넣을 수 있지만 다른 클래스에서 그것을 재사용 할 수 있기를 원한다.JS : 전역 함수를 사용하여 인스턴스 값 변경

예 : 방법이 일을 아무것도가 표시되지 않습니다 위해 내가 검색 한

function changeX(x) { 
    x += 20; 
    return x; 
} 

class Box { 
    constructor(posX) { 
    this.posX = posX; 
    }; 

    change() { 
    changeX(this.posX); 
    } 
}; 

const box1 = new Box(20); 
var box2 = new Box(40); 

console.log("Pre Function Call:"); 
console.log("Box 1: " + box1.posX); 
console.log("Box 2: " + box2.posX); 

changeX(box1.posX); 
box2.change(); 

console.log(""); 
console.log("Post Function Call:") 
console.log("Box 1: " + box1.posX); 
console.log("Box 2: " + box2.posX); 

.

답변

0
function changeX() { 
    this.posX += 20; 
} 

class Box { 
    constructor(posX) { 
     this.posX = posX; 
    } 
}; 

Box.prototype.change = changeX; 



const box1 = new Box(20); 
var box2 = new Box(40); 

console.log("Pre Function Call:"); 
console.log("Box 1: " + box1.posX); 
console.log("Box 2: " + box2.posX); 
changeX.apply(box1); 
box2.change(); 

console.log(""); 
console.log("Post Function Call:") 
console.log("Box 1: " + box1.posX); 
console.log("Box 2: " + box2.posX); 

설정 클래스의 프로토 타입을 사용하거나 적용 기능

클래스의 속성이 클래스에 의존하는 경우, 당신은 공장 기능을 사용할 수 있습니다

function changeX(attr) { 
    return (function(){ 
     this[attr] += 20; 
    }).bind(this) 
} 
Box.prototype.change = changeX('posX');