我创建了一个对象Person并为其分配了一个显示功能。但是,如果我从对象中调用该函数,则表示this.name
未定义。那是什么?我的意思是,为什么空字符串而不是未定义..
<script>
function Person(n)
{
this.name = n;
this.display = display;
}
function display()
{
console.log('Hi, ' + this.name + '!');
console.log(this.name === undefined);
}
var person = new Person("John");
person.display();
display(); // here!!
</script>
输出:
Hi, John!
false
Hi, !
false
答案 0 :(得分:1)
你指的是第二个实例中的window.name
,它是一个现有的(已定义的)变量。 MDN提供了一些文档。它默认似乎是一个空字符串。
在adeneo的链接中,(http://jsfiddle.net/KKptb/)输出为:
"Hi, John!"
false
"Hi, result!"
false
因为jsFiddle用name="result"
<iframe name="result" src="http://fiddle.jshell.net/KKptb/show/" frameborder="0"></iframe>