Object 对象实例的原型对象链

  1. Object 对象实例的原型对象链是最短的
  2. 原型对象链中的所有属性和方法会被构造函数的实例共享(继承)。

当我们访问对象的属性和方法时,首先在当前对象的属性列表中查找,如果找到则使用它。
如果找不到,则回去对象的原型对象中查找,如果找到,则使用它。
如果对象的原型对象中也没有,则会去原型对象的原型对象中查找。
以此类推,直到原型链的最顶端(Object.prototype)。
最终把原型对象链找遍了还是没有找到,如果你找的是一个属性的话,则返回 undefined,如果你找的是一个方法,则报错。

通过 Rectangle.prototyp 属性为原型对象添加新属性

Rectangle.prototype = {
            getArea: function () {
                return '矩形的面积为:' + this.height * this.width;
            },
            constructor: Rectangle,
            __proto__
        }

我们可以换一种方式为原型对象添加新属性,使用 Object.defineProperty() 方法添加属性

Object.defineProperty(Rectangle.prototype, 'getArea', {
            enumerable: false,
            configurable: false,
            value: function () {
                return '矩形的面积为:' + this.height * this.width;
            },
            writable: false
        })

与其每次添加一个,不如直接使用一个新对象替换已有的对象

Rectangle.prototype = {
            getArea: function () {
                return '矩形的面积为:' + this.height * this.width;
            },
            getDiagonal: function () {
                return '矩形的对角线长度为:' + Math.sqrt(this.width ** 2 + this.height ** 2);
            },
            constructor: Rectangle
        };
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值