Let's take an example of a circle object. When I copy the properties of this object to RoundButton with my custom extend function, I thought RoundButton will get the reference of area method from circle object.
So if I change the definition of area method in circle it will also change the area property in RoundButton but in the console, it remains as it was before. I am really confused if I have not cloned the properties but copied them why it is behaving like that.
var circle  = {  
        area: function() {
            return Math.PI * this.radius * this.radius;
        }
    };
function extend(destination, source) {
    for( var k in source ){
        if(source.hasOwnProperty(k)) {
            destination[k] = source[k];
        }
    }
    return destination;
}
var RoundButton = function (radius) {
    this.radius = radius;
};
extend(RoundButton.prototype, circle);
console.log(RoundButton.prototype.area);
// ƒ () { return Math.PI * this.radius * this.radius;}
circle.area = function() {
    return Math.PI * this.radius * this.radius * this.radius;
}
console.log(RoundButton.prototype.area);
// ƒ () { return Math.PI * this.radius * this.radius;}
 
     
    