代码之家  ›  专栏  ›  技术社区  ›  billy

构造器函数与object.create有什么区别和应用程序?

  •  1
  • billy  · 技术社区  · 6 年前

    对于Java,我正试图正确理解JavaScriptOOP。我读过这方面的文章,但并没有直观地理解对象创建和继承这两种方法的区别和应用。

    对象.创建

    据我所知: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);
    

    这里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: 菲莉的实际对象继承了猫(或菲莉的原型对象)的属性?

    很明显,我不明白javascript中如何、何时以及为什么使用原型对象?

    请帮助!

    0 回复  |  直到 6 年前