Javascript 我不能理解这一点
正在尝试学习Js,但无法理解DOM元素未获得值的原因:Javascript 我不能理解这一点,javascript,hoisting,executioncontext,Javascript,Hoisting,Executioncontext,正在尝试学习Js,但无法理解DOM元素未获得值的原因: var Car = function(loc) { var obj = Object.create(Car.prototype); obj.loc = loc; obj.move = move; return obj; }; Car.prototype = { move : function() { this.loc++; } }; var emy = Car(1); emy.move(); doc
var Car = function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
obj.move = move;
return obj;
};
Car.prototype = {
move : function() {
this.loc++;
}
};
var emy = Car(1);
emy.move();
document.getElementById("id").innerHTML = emy.loc;
因此,我创建了一个类构造函数及其原型对象,但最后一行-document.getElementById(“id”).innerHTML=emy.loc代码>没有被执行(除非我把它放在文件的顶部)。为什么呢
片段:
未执行(除非我将其放在文件顶部)
通常,这表示上述代码中存在错误。代码在执行这一行之前崩溃
检查一下那把小提琴的控制台日志,你会发现
哦,吊运和这里发生的事无关
未执行(除非我将其放在文件顶部)
通常,这表示上述代码中存在错误。代码在执行这一行之前崩溃
检查一下那把小提琴的控制台日志,你会发现
哦,提升与这里发生的事情无关。你还没有定义什么是移动:
var Car = function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
obj.move = move; // <<< Here
return obj;
};
在安装过程中,只需将函数放入对象中即可解决此问题:
var Car = function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
obj.move = function() {
this.loc++;
}
return obj;
};
或者通过将功能正确添加到原型:
var Car = function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
// Removed move from here
return obj;
};
// This adds move to the cars prototype
Car.prototype.move = function() {
this.loc++;
}
您尚未定义什么是移动:
var Car = function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
obj.move = move; // <<< Here
return obj;
};
在安装过程中,只需将函数放入对象中即可解决此问题:
var Car = function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
obj.move = function() {
this.loc++;
}
return obj;
};
或者通过将功能正确添加到原型:
var Car = function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
// Removed move from here
return obj;
};
// This adds move to the cars prototype
Car.prototype.move = function() {
this.loc++;
}
是的,我刚刚将它的id命名为“id”:)很抱歉混淆了。您可以创建一个代码笔/代码段,通过编辑您的问题并按下“代码段”按钮来复制您的问题吗。正如您看到的,第一个未定义,但第二个div没有任何值..谢谢@Sergio Tulentsev-我会记住这一点是的,我刚刚将其id命名为“id”:)很抱歉混淆,您可以创建一个代码笔/代码段,通过编辑您的问题并按下“代码段”按钮来复制您的问题吗。正如你看到的,第一个未定义,但第二个div没有任何价值。谢谢@Sergio Tulentsev-我会记住这一点谢谢,现在我明白了,汉克斯,现在我明白了,是的,好的。我还可以保留我的模式Car.prototype={move:function(){this.loc++;}
只需要从构造函数中删除obj.move=move
。@rordevnewb是的,很抱歉我稍微更改了将函数添加到构造函数的语法,但没有理由不使用您的,问题是构造函数中对move
的引用。是的,我明白-我只是在学习,这个模式是网景统治世界时使用的:)谢谢你的解释!啊,是的,好的。我还可以保留我的模式Car.prototype={move:function(){this.loc++;}
只需要从构造函数中删除obj.move=move
。@rordevnewb是的,很抱歉我稍微更改了将函数添加到构造函数的语法,但没有理由不使用您的,问题是构造函数中对move
的引用。是的,我明白-我只是在学习,这个模式是网景统治世界时使用的:)谢谢你的解释!