Javascript 如何使用类、传统的基于函数和对象文字的语法获得相同的结果?

Javascript 如何使用类、传统的基于函数和对象文字的语法获得相同的结果?,javascript,Javascript,使用三种不同的语法是否可以实现相同的结果? 我已经做了最初的两个,但是需要有关对象文字的帮助 类语法 传统的基于函数的语法 对象文字语法因此对象文字语法如下所示 Animal = { noice: 'Moooo', speak: function(){ return this.noice }, eat: function(){ return this } } var cow = Object.create(Animal) cow.speak() // Moooo create(

使用三种不同的语法是否可以实现相同的结果? 我已经做了最初的两个,但是需要有关对象文字的帮助

  • 类语法
  • 传统的基于函数的语法

  • 对象文字语法因此对象文字语法如下所示

    Animal = {
      noice: 'Moooo',
      speak: function(){ return this.noice },
      eat: function(){ return this }
    }
    
    var cow = Object.create(Animal)
    cow.speak() // Moooo
    
    create()使用现有对象(动物)作为新创建对象的原型,创建一个新对象


    因此,新的带有的
    cow
    对象没有自己的属性,但其原型将指向动物对象

    仅使用对象文字语法无法将方法放入对象的原型中。但您可以使其与
    对象一起工作。创建
    和自定义构造函数:

    “使用严格的”
    功能动物(){
    返回Object.create({
    讲:函数(){
    还这个
    }
    });
    }
    Animal.eat=function(){
    还这个
    } 
    常量动物=动物();
    console.log(animal.speak())//animal{}
    让我们说吧;
    console.log(speak())//未定义
    console.log(Animal.eat)//动物
    让我们吃吧;
    
    console.log(eat())//未定义
    在第三个示例中,没有名为
    Animal的类
    。该对象是由类对象创建的。下面的链接解释了隐式和显式绑定,以便为
    提供适当的上下文。例如:Animal.speak.bind(Animal)将返回动物对象作为
    this
    Yes存在。看我的answer@ViktorGarba您直接在对象上创建方法,而不是其原型。是的,方法直接在对象上设置,然后使用object.create定义一个新对象,其原型指向对象(动物)。因此,您已经在对象实例原型上设置了方法。@ViktorGarba您必须使用
    object.create
    将该方法添加到原型中。您不能只使用对象文字语法。现在明白了吗?是的,很公平,你不能只使用对象文字语法,你必须结合对象文字语法使用object.create。但仅仅因为必须使用Object.create,并不意味着无法使用Object-literal语法。问题是如何获得与使用对象文字的类相同的结果。
    "use strict"
    function Animal() {}
    Animal.prototype.speak  = function() {return this}
    Animal.eat              = function() {return this}
    
    let obj = new Animal();
    console.log(obj.speak()); // Animal {}
    let speak = obj.speak;
    console.log(speak()); // undefined
    
    console.log(Animal.eat()) // Animal
    let eat = Animal.eat;
    console.log(eat()); // undefined
    
    "use strict"
    Animal = {
      speak: function(){ return this},
      eat: function(){ return this }() // ????????????????
    }
    
    console.log(Animal.speak()) // Animal {}
    let speak = Animal.speak;
    console.log(speak()) // undefined
    
    console.log(Animal.eat) // Animal ????????????????
    let eat = Animal.eat;
    console.log(eat()) // undefined ????????????
    
    Animal = {
      noice: 'Moooo',
      speak: function(){ return this.noice },
      eat: function(){ return this }
    }
    
    var cow = Object.create(Animal)
    cow.speak() // Moooo