美文网首页js
对象继承和构造函数继承

对象继承和构造函数继承

作者: u14e | 来源:发表于2017-03-01 23:32 被阅读13次

对象继承

指定哪个对象是新对象的[[prototype]]

对象字面量隐式指定Object.prototype为其[[prototype]]:

var person = {
    name: 'u14e'
};
// 等同于
var person = Object.create(Object.prototype, {
    name: {
        configurable: true,
        enumerable: true,
        value: 'u14e',
        writable: true,
    }
});
var person1 = {
    name: 'u14e',
    sayName: function() {
        alert(this.name);
    }
};
var person2 = Object.create(person1, {
    name: {
        configurable: true,
        enumerable: true,
        value: 'u148',
        writable: true,
    }
});

person1.hasOwnProperty('sayName');      // true
person1.isPrototypeOf(person2);         // true
person2.hasOwnProperty('sayName');      // false

构造函数继承

创建一个函数时,函数自动生成一个prototype属性,这个属性被自动设置为一个新的继承自Object.prototype的原型对象

function Foo() {}
// js引擎背后设置prototype
Foo.prototype = Object.create(Object.prototype, {
    constructor: {
        configurable: true,
        enumerable: true,
        value: Foo,
        writable: true,
    }
})
function Rectangle(length, width) {
    this.length = length;
    this.width = width;
}
Rectangle.prototype.getArea = function() {
    return this.length * this.width;
};

function Square(size) {
    Rectangle.call(this, size, size);
}
Square.prototype = Object.create(Rectangle.prototype, {
    constructor: {
        configurable: true,
        enumerable: true,
        value: Square,
        writable: true,
    }
});

相关文章

  • js的继承方式

    1 类式继承 子类的原型对象 2 构造函数继承 创建即继承 3 组合继承 (类式继承和构造函数...

  • 原型链

    原型继承 构造函数继承? 函数对象 原型prototype

  • 对象继承和构造函数继承

    对象继承 指定哪个对象是新对象的[[prototype]] 对象字面量隐式指定Object.prototype为其...

  • JavaScript几种继承方式及其优缺点总结

    •借用构造函数 (又叫伪造对象或经典继承)•组合继承(也叫伪经典继承)•寄生组合式继承 ☞借用构造函数继承 原理:...

  • 深入理解js中实现继承的原理和方法

    原型对象继承 ==原理:原型对象的属性可以经由对象实例访问== 下面的例子,所含【对象继承】和【构造函数继承】,用...

  • JavaScript的构造函数扩展、继承以及封装

    构造函数的扩展 扩展Man构造函数 构造函数的继承 Dog 继承 Pig JavaScript 内置对象的扩展 例...

  • js继承

    1、原型式继承:借助构造函数的原型对象实现继承,即 子构造函数.prototype = 父构造函数.prototy...

  • 面向对象继承复习

    js基础的面向对象的继承 构造函数继承 这种方法的缺陷是只会继承构造函数上的实例属性,并不会继承原型对象上的属性,...

  • ES5 和 ES6 继承比较:

    ES5构造函数和继承: ES6构造函数和继承:

  • 前端面试准备--6.面向对象

    面向对象 1、类与实例 2、类与继承 1.借助构造函数实现继承 2.借助原型链实现继承(弥补构造函数实现继承不足)...

网友评论

    本文标题:对象继承和构造函数继承

    本文链接:https://www.haomeiwen.com/subject/jnncgttx.html