我正在遵循面向对象的JavaScript教程,当我通过控制台登录"userOne.login“时遇到了一个问题,我希望看到"ryu@ninjas.com已登录”,但最终看到的是
“登录名(){console.log(this.email,'hasƒin');}”
看起来“这个”并没有收到邮件。我想知道为什么我会收到这条消息。谢谢。
var userOne = {
email:'ryu@ninjas.com',
name:'Ryu',
login(){
console.log(this.email, 'has logged in');
},
logout(){
console.log(this.email, 'has logged out');
}
};
<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>
发布于 2018-10-11 06:44:52
这是一个相当快速的修复方法,只需在函数调用的末尾添加()
即可。例如login()
。login
引用了函数的定义,该函数实际上是一个链接到原型Function
的对象。将函数作为功能主体运行的方法是使用括号调用它。
发布于 2018-10-11 06:48:37
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');
}
};
发布于 2018-10-11 06:51:01
您的语法稍有偏差;您需要在对象中为函数指定一个键,比如login: function()
和logout: function()
。然后,您可以使用userOne.login()
和userOne.logout()
调用这些函数
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();
<h1>Object Oriented JavaScript</h1>
请注意,将函数存储在其相应的对象中是首选方法,因为这些函数包含在对象的作用域中,并且不会污染全局作用域;您不能简单地调用login()
。
https://stackoverflow.com/questions/52749760
复制相似问题