자바 스크립트를 처음 사용했습니다. 보통 Python/PHP로 작성하십시오. 현재 읽을 거리 : JavaScript : The Definitive Guide : 웹 페이지 활성화 (확실한 안내서).Javascript : 상속 테스트 문제 (JS Definitive Guide 서적에서 제공 한 코드 문제)
사용되는 예제 코드의 일부 나는 이것이 작동하지 않는 이유를 알아 내려고하고 있으며 가능한 경우 자세한 설명은 속성 getter/setters 및 상속보다 아래에 나와 있습니다.
기능 내가 사용 :
function inherit(p) {
if (p == null) throw TypeError();
if (Object.create) return Object.create(p);
var t = typeof p;
if (t !== "object" && t !== "function") throw TypeError();
function f() {};
f.prototype = p;
return new f();
}
var p = {
x: 1.0,
y: 1.0,
get r() {
return Math.sqrt(this.x*this.x + this.y*this.y);
},
set r(newvalue) {
var oldvalue = Math.sqrt(this.x*this.x + this.y*this.y);
var ratio = newvalue/oldvalue;
this.x *= ratio;
this.y *= ratio;
},
get theta() { return Math.atan2(this.y, this.x); }
};
내가 테스트를 실행
. 나는 상속받는 것을 볼 수 없다.> var q = inherit(p)
undefined
> q
{}
> p
{ x: 1, y: 1, r: [Getter/Setter], theta: [Getter] }
왜 그렇습니까? 현재 Mac에서 node v6.11.3
을 사용하고 있습니다.
업데이트 :
개체의 모든 값을 표시하는 방법을 발견했습니다. 객체에 enumerable:True
을 설정하면 모든 값이 자동으로 표시됩니다. 어떻게해야하는지 알아 내려고 노력했습니다. 누구든지 Node.js
도 사용하십시오.
코드를 사용하는 방법은 다음과
는 정상적으로 작동합니다. 당신은 제대로 된 결과를보고 있지 않습니다. 'q'를 로그하면 상속 된 모든 속성을 볼 수 있습니다. 당신이보고있는'{}'는 객체가'inherit (p)'에서 반환되었다는 것을 콘솔이 알려주는 방식 일뿐입니다. 코드 하단에'console.log (상속 (p))'를 추가하여 실행하십시오. 또한 ** ** [Fiddle] (https://jsfiddle.net/vpLu0rkh/3/) ** –
네. 또는 클릭하기 쉬운 클릭을 위해 브라우저 콘솔에서 모든 것을 실행하십시오. – Will
JS 스 니펫 코드와 함께 Chrome/FF에서 콘솔을 사용할 수 있다는 것을 깨닫지 못했습니다. 호기심에서,'node'를 사용하면서 터미널에서이 정보를 얻는 쉬운 방법이 있습니까? 나는'console.log (inherit (p))'를 시도했지만 여전히'{}'을 제공한다. 'iPython' 나는 모든 변수를보고 '누가'사용할 수 있고 변수를 빠르게 볼 수 있습니다. – Josh