繁体   English   中英

控制台打印出未定义的内容。 我的代码有什么问题?

[英]Console prints out undefined. What is wrong with my code?

 function Person(name,age){ this.name=name; this.age=age; } var person1 = new Person("name1",4) var person2 = new Person("name2",6) function Animal(name,size){ this.name=name; this.size=size; } var animal1=new Animal("name1","small") var animal2 = new Animal("name2","big") Person.prototype.sayName=function(){ console.log("Hello "+[name]) } Animal.prototype.sayName=function(){ console.log("Hello "+[name]) } animal1.sayName(); 

我刚刚学习了Javascript,然后开始玩一些代码。 当我运行此代码时,控制台将打印出未定义的内容。 我相信控制台应打印:“ Hello animal1”。 怎么了

您必须指定this关键字来引用当前实例。

Animal.prototype.sayName = function(){
  console.log("Hello "+ this.name)
}

console.log("Hello " + [name])应该是console.log("Hello " + this.name)

我在控制台中尝试过,现在输出Hello name1

在javascript中,当您说new时 ,会发生的第一件事是将创建一个空对象。 创建此对象后,将执行动物函数,并且当前执行上下文将引用新创建的空对象。 因此,当您说this.name = name和this.size = size时, this关键字将引用新创建的对象。 因此,如下面的代码片段所示,在访问它时,总是需要使用this来引用该属性:

 function Animal(name,size){ this.name=name; this.size=size; } var animal1=new Animal("name1","small") Animal.prototype.sayName=function(){ console.log("Hello "+this.name) } animal1.sayName(); 

希望这能回答您的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM