为什么这个陈述没有定义?

时间:2013-12-28 19:49:36

标签: javascript

我创建了一个对象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

1 个答案:

答案 0 :(得分:1)

你指的是第二个实例中的window.name,它是一个现有的(已定义的)变量。 MDN提供了一些文档。它默认似乎是一个空字符串。

在adeneo的链接中,(http://jsfiddle.net/KKptb/)输出为:

"Hi, John!"
false
"Hi, result!"
false

因为jsFiddle用name="result"

声明iframe
<iframe name="result" src="http://fiddle.jshell.net/KKptb/show/" frameborder="0"></iframe>