构造函数与Object.create-区别和用途是什么?

时间:2018-08-06 03:44:59

标签: javascript oop inheritance prototype

来了Java,我试图正确地理解Javascript OOP。我已经读过它,但是还没有直观地理解对象创建和继承这两种方法的区别和应用。

  

Object.create

据我了解:Object.create()将给定对象的原型设置为传递给.create()的对象?

例如。

const Cat = {
    init: function(sound) {
        this.sound = sound;
            return this
    },
    makeSound: function() {
        console.log(this.sound);
    }
}
var mark = Object.create(Cat);
mark.init('meoow!');
mark.makeSound();

console.log(mark);

此处标记的原型对象被引用到Cat对象吗?对吧? 如果是这样

问题1:为什么JS不只是将父类的对象设置为子类(而不是其原型)?

问题2:将原型对象与每个对象链接到底有什么用?如果我们只有一个对象引用另一个对象,继承会不会更舒适?

问题3:我已经知道设置对象的原型字段不是一种好习惯吗?我们应该只使用实际的对象字段和方法,这是真的,为什么?即Cat.prototype.age = 10;

  

新对象()

在以下代码中...

function cat() {
 this.sound = 'wooof!';
}
    var filly = new cat();
    console.log(filly.sound);
    console.log(filly);

问题4: filly的实际对象继承了cat(或filly的原型对象)的属性?

似乎很明显我不理解JavaScript中可能如何,何时以及为何使用原型对象?

请帮助!

0 个答案:

没有答案