我正在从codecademy开始上课,并且不了解javascript执行的顺序。
我从Penguin构造函数开始:
function Penguin(name) {
this.name = name;
this.numLegs = 2;
}
//然后我在这里创建一个Emperor类,让它继承自Penguin
function Emperor(name) {
this.name = name;
}
Emperor.prototype = new Penguin();
//创建一个“emperor”对象并打印它拥有的腿数
var me = new Emperor("John");
console.log(me.numLegs);
我的问题:我的印象是我可以在继承之前定义我的对象,并且仍然控制台记录numLegs属性。在创建任何“empeor”对象之前,是否必须设置继承?如果是这样,这是否意味着javascript从上到下读取,因为我听到了不同的东西。
答案 0 :(得分:1)
Javascript语句按它们出现的顺序执行。
但是,函数声明语句被提升到它们的包含范围,所以它们的函数甚至在语句出现之前就已存在。
对函数进行操作的任何语句(例如prototype
)仍按正常顺序运行。
答案 1 :(得分:0)
是的,确实从上到下执行。
但是,函数定义(不适用于为变量分配的匿名函数)和var
声明(不是赋值,只是声明)被提升到当前作用域的顶部。 (JS中的范围映射到函数定义)。