我正在关注面向对象的JavaScript教程,并且在控制台登录“ userOne.login”时遇到问题,希望看到“ ryu@ninjas.com已登录”,但最终看到
“ƒlogin(){console.log(this.email,'已经登录'); }“
似乎“此”没有收到电子邮件。我想知道为什么收到此消息。谢谢。
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>
答案 0 :(得分:1)
这是一个相当快速的解决方案,只需在函数调用的末尾添加()
。例如login()
。 login
引用了函数的定义,该函数实际上是链接到原型Function
的对象。将功能作为功能主体运行的方法是使用括号进行调用。
答案 1 :(得分:1)
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');
}
};
答案 2 :(得分:1)
您的语法略有不同;您需要为对象内的函数提供键,例如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()
。