javascript高级程序设计 安全作用域构造函数 问题

书上的解释不太理解,求大神帮解释下。
为什么第一种没有继承到sides属性

https://img3.mukewang.com/5c7390f80001f95408000213.jpg

// 创建作用域安全的构造函数

function Polygon(sides) {

    if (this instanceof Polygon) {

        console.log('this', this);

        this.sides = sides;

        this.getArea = function(){

            return 0;

        }

    } else {

        return new Polygon(sides);

    }

}


// 非作用域安全的构造函数

function Rectangle(width, height) {

    Polygon.call(this, 2);  

    this.width = width;

    this.height = height;

    this.getArea = function (){

        return this.width * this.height;

    }

}


let rect = new Rectangle(5,10);

console.log(rect.sides);

为什么rect没有继承到side属性


而通过原型就可以


Rectangle.prototype = new Polygon();

let rect = new Rectangle(2,4);

console.log(rect.sides);// 2


慕码人8056858
浏览 408回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript