首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >它不会在控制台内面向对象的JavaScript中显示"this“对象

它不会在控制台内面向对象的JavaScript中显示"this“对象
EN

Stack Overflow用户
提问于 2018-10-11 06:42:47
回答 3查看 24关注 0票数 0

我正在遵循面向对象的JavaScript教程,当我通过控制台登录"userOne.login“时遇到了一个问题,我希望看到"ryu@ninjas.com已登录”,但最终看到的是

“登录名(){console.log(this.email,'hasƒin');}”

看起来“这个”并没有收到邮件。我想知道为什么我会收到这条消息。谢谢。

代码语言:javascript
复制
var userOne = {
  email:'ryu@ninjas.com',
  name:'Ryu',
  login(){
    console.log(this.email, 'has logged in');
  },
  logout(){
    console.log(this.email, 'has logged out');
  }
};
代码语言:javascript
复制
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Object Oriented JavaScript</title>
</head>
<body>

  <h1>Object Oriented JavaScript</h1>
    
</body>
</html>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-11 06:44:52

这是一个相当快速的修复方法,只需在函数调用的末尾添加()即可。例如login()login引用了函数的定义,该函数实际上是一个链接到原型Function的对象。将函数作为功能主体运行的方法是使用括号调用它。

票数 1
EN

Stack Overflow用户

发布于 2018-10-11 06:48:37

代码语言:javascript
复制
var userOne = {
  email:'ryu@ninjas.com',
  name:'Ryu',
  login: function(){
    console.log(this.email, 'has logged in');
  },
  logout: function(){
    console.log(this.email, 'has logged out');
  }
};
票数 1
EN

Stack Overflow用户

发布于 2018-10-11 06:51:01

您的语法稍有偏差;您需要在对象中为函数指定一个键,比如login: function()logout: function()。然后,您可以使用userOne.login()userOne.logout()调用这些函数

代码语言:javascript
复制
var userOne = {
  email: 'ryu@ninjas.com',
  name: 'Ryu',
  login: function() {
    console.log(this.email, 'has logged in');
  },
  logout: function() {
    console.log(this.email, 'has logged out');
  }
};

userOne.login();
userOne.logout();
代码语言:javascript
复制
<h1>Object Oriented JavaScript</h1>

请注意,将函数存储在其相应的对象中是首选方法,因为这些函数包含在对象的作用域中,并且不会污染全局作用域;您不能简单地调用login()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52749760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档