2014-01-02 3 views
1

Может кто-нибудь объяснить, что происходит здесь: Пример кода 1:Weird поведение Object.create()

o2={b:10}; 
function classCreate(proto,o){ 
    return Object.create(proto,o); 
} 
var o1=classCreate({a:o2},{}); 
console.log(o1.a.b); // prints 10 

Пример кода 2:

o2={b:10}; 
function classCreate(proto,o){ 
    return Object.create(proto,o); 
} 
var o1=classCreate({},{a:o2}); 
console.log(o1.a.b); //reference error 

Как Object.create удается каковы его масштабы при расширении конечного объекта?

+2

Посмотрите на [Object.defineProperties()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties) и [Object.create()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/ create) – Givi

+0

Что это связано с областью? Btw, 'var classCreate = Object.create', дополнительной функции не требуется. – Bergi

ответ