<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。 为什么?
答案 0 :(得分:2)
当您要求employee.name
时,您实际要求的是功能的名称。现在这似乎是 new 功能that has appeared in ES6,所以虽然这可能适用于已经开始实施ES6标准的当前浏览器,但我会打赌我的最后一个没有#&# 39;在IE8等旧浏览器中工作,仅仅是因为他们不支持ES6。
employee.jobtitle
返回undefined
的原因是因为与jobtitle
不同,Function.prototype
中没有名为name
的本机属性。
请记住,employee
是一个构造函数,它是fred
在这种情况下的对象实例。 fred.name
和fred.jobtitle
会像您期望的那样为您提供该对象的属性值。
答案 1 :(得分:0)
employee
是一个函数,它没有name
属性。
fred
是由该函数构建的对象。 具有name
属性。
尝试:
document.getElementById("demo").innerHTML = fred.name;
在面向对象的编程中,您引用要与其交互的类型的特定实例。不是类型本身。