JavaScript-原型函数中的访问类实例属性

查理鱼

我有以下代码:

class Pet {
    constructor(name) {
        this.petName = name;
    }
}

Pet.prototype.speak = {
    name: function() {
        console.log(this.petName);
    }
};

// -----------------------------------------------

const myPet = new Pet("Max");
myPet.speak.name();

我希望可以打印此代码Max,但可以打印undefined

如果我将console.log更改为console.log(this);则会打印{ name: [Function: name] }这使我认为该函数无权访问实例属性。

如何确保此功能可以访问实例?

达克里·丹尼

如果您要定位或支持ES6语言功能,则一种方法可以通过get结合使用的方法来实现arrow function

get方法将被声明get speak(),这意味着它可以在没有括号的情况下被调用。此方法将返回包含name()箭头功能的对象使用箭头功能可以让您直接Pet通过this关键字访问封闭实例

class Pet {
    constructor(name) {
        this.petName = name;
    }
    
    // Get method allows the speak method to be called without ()
    get speak() {
      return {
        // Arrow function causes this.petName to refer to petName 
        // field of this class instance 
        name: () => {
          console.log(this.petName);
        }
      }
    }
}
 
const myPet = new Pet("Max");
myPet.speak.name();

const yourPet = new Pet("Min");
yourPet.speak.name();

这是有关get方法语法和语言功能的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

访问Javascript原型函数

如何从javascript类中访问原型属性?

原型函数中的 Javascript 子函数

从原型函数JavaScript访问对象上下文

Javascript:使用super调用子原型函数中的父原型函数

JavaScript原型函数问题

JavaScript组成原型函数

JavaScript 原型函数覆盖

Javascript在构造函数中调用原型函数

在构造函数原型上定义的方法如何访问Javascript构造函数中的实例成员?

JavaScript-原型函数与ViewModel函数?

在JavaScript类中调用父方法,但stll可以访问对象实例内部的原型方法吗?

在JavaScript中,如何访问超类实例的属性?

返回NAN的Javascript原型函数

始终加载Javascript原型函数

在JavaScript原型函数中保留对“ this”的引用

Javascript 获取原型函数名称

Javascript:使用原型函数发布

JavaScript:遍历原型函数的变量

实例中的Javascript原型

Javascript原型扩展了基类,无法从原型类访问基类的属性/方法

括号中的构造函数调用时,Javascript原型函数未定义

原型中的Javascript访问变量,无需实例化

Javascript从构造函数内部的函数调用原型函数

Javascript:原型函数中的变量是否在对象之间共享?

在 JavaScript 中循环数组时,如何在其内部递归调用原型函数?

如何使构造函数参数可用于原型函数JavaScript

Javascript - 使用日期函数运行模拟的原型函数

如何在javascript中从原型访问对象属性?