Javascript: проблема с тестом наследования (проблема с кодом в JS Definition Guide)

Josh спросил: 14 ноября 2017 в 07:13 в: javascript

Я новичок в Javascript. Обычно пишут Python / PHP. В настоящее время читаем JavaScript: Полное руководство: активировать ваши веб-страницы (Полные руководства) .

Часть используемого примера кода, который я пытаюсь выполнить выясните, почему это не сработает, и подробное объяснение, почему тоже, если возможно, ниже, по свойствам 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] }

Почему это так? В настоящее время я использую node v6.11.3 на Mac для запуска этого.

Update:

Обнаружено, как отображать все значения в объекте. Установка enumerable:True для объекта автоматически отобразит все значения. Что я пытался понять, как это сделать. Для тех, кто также использует Node.js.

0 ответов