:멀티 스레드 Nashorn : o.constructor는 === o.constructor 준다 거짓
// having some object o loaded in another thread
print(o.constructor === o.constructor); // false
print(o.constructor === Object); // false as well
print(o.foo === o.foo); // true - OK
을 어떻게이 단일 스크립트 엔진 내에서 가능합니까? 위의 o
은 객체 리터럴 표기법을 사용하여 만든 객체입니다 (다른 스레드에서). o.constructor
을 인쇄하면 보통 function Object() { [native code] };
이됩니다.
print({}.constructor === {}.constructor); // true
모든 아이디어 : 동시에
?
업데이트
그것은이 전혀 스레딩을 멀티 관련이없는 있었다 밝혀졌다. 자세한 내용은 내 대답을 참조하십시오.
각 스레드는 아마도 Object 생성자의 자체 복사본을 가지고 있습니까? 브라우저의 다른 창과 같은 종류입니까? 그것은'window.frames [0] .Object! == window.Object'입니다. –
@JuanMendes 그게 정확히 그게 겠지요. 예외 ... 음, "외계인"개체에 대한 참조 인 경우, 나는 그것이 어떻게 작동하는지 잘 모르겠습니다. OP가 설정 한 것에 대해 더 많이 알면 도움이 될 것입니다. 마치 ScriptEngine 하나 또는 여러 개입니까? – Pointy
o.constructor가 자신과 동일하지 않은 이유를 설명합니까? – Tvaroh