所以我是自学开发人员。我学到了很多PHP,并开始使用JavaScript。向我介绍了javascript一流的函数以及所有这些。我了解到您可以通过原型将新属性(var或function)添加到类中,该原型来自于我了解的具有其他所有对象(例如变量,函数)的对象。在尝试原型时,我遇到了以下代码问题:
function Fox(color) {
this.color = color;
}
Fox.prototype.speak = function() {
console.log('I am ' + this.color);
};
var myFox = new Fox('blue');
window.setTimeout(myFox.speak, 1000);
在这种情况下,this.color是不确定的,我很难理解为什么。它像这样工作,但没有时间延迟。我认为setTimeout不能正常工作是因为它是如何工作的,因为要让function(first class)作为参数而不执行函数(就像放置()一样)。再次不知道为什么它返回蓝色值。
/* This works but with no time delay: */
window.setTimeout(myFox.speak(), 1000);
/* returns blue */
答案 0 :(得分:-1)
您的问题-如果是第一种情况:您丢失了内容 试试吧:
function Fox(color) {
this.color = color;
}
Fox.prototype.speak = function() {
console.log('I am ' + this.color);
};
var myFox = new Fox('blue');
setTimeout(myFox.speak.bind(myFox), 1000);
您还可以在您的方法中使用回调:
function Fox(color) {
this.color = color;
}
Fox.prototype.speak = function() {
console.log('I am ' + this.color);
};
var myFox = new Fox('blue');
setTimeout(function(){myFox.speak()}, 1000);