需要解释这个Javascript代码

时间:2015-06-19 14:08:22

标签: javascript user-interface

<p id="demo"></p>

<script>
function employee(name, jobtitle, born) {
    this.name=name;
    this.jobtitle=jobtitle;
    this.born=born;
}


var fred = new employee("Fred Flintstone", "Caveman", 1970);
document.getElementById("demo").innerHTML = employee.name;
</script>

当我执行此代码时,我输出为:employee 但是,如果我执行employee.jobtitle代替employee.name,如:
    document.getElementById(&#34; demo&#34;)。innerHTML = employee.jobtitle

我输出为:undefined。 为什么?

2 个答案:

答案 0 :(得分:2)

当您要求employee.name时,您实际要求的是功能的名称。现在这似乎是 new 功能that has appeared in ES6,所以虽然这可能适用于已经开始实施ES6标准的当前浏览器,但我会打赌我的最后一个没有#&# 39;在IE8等旧浏览器中工作,仅仅是因为他们不支持ES6。

employee.jobtitle返回undefined的原因是因为与jobtitle不同,Function.prototype中没有名为name的本机属性。

请记住,employee是一个构造函数,它是fred在这种情况下的对象实例。 fred.namefred.jobtitle会像您期望的那样为您提供该对象的属性值。

答案 1 :(得分:0)

employee是一个函数,它没有name属性。

另一方面,

fred是由该函数构建的对象。 具有name属性。

尝试:

document.getElementById("demo").innerHTML = fred.name;

在面向对象的编程中,您引用要与其交互的类型的特定实例。不是类型本身。