这基本上就是我尝试做的事情(我是Javascript的新手,所以请耐心等待):
function Car(make)
{
this.make = make;
var noises = ["vroom", "woosh"];
function addNoise()
{
noises.push("wham");
this.noises = noises;
}
addNoise();
}
var myCar = new Car("honda");
console.log(myCar.noises[2]);
现在,我认为问题是当我this.noises = noises;
时,this
并未引用Car
,所以当我尝试console.log(myCar.noises[2]);
时发出警告未定义。在我的实际代码中,等效的addNoise
以异步方式运行,因此我必须能够在该函数中使noises
成为属性。
编辑:
是的,其他问题涉及类似的问题。这似乎有效:
function Car(make)
{
this.make = make;
var noises = ["vroom", "woosh"];
var self = this;
function addNoise()
{
noises.push("wham");
self.noises = noises;
}
addNoise();
}
var myCar = new Car("honda");
console.log(myCar.noises[2]);
非常简单的解决方案!
答案 0 :(得分:-1)
最好的方法是对函数进行原型设计
functionon Car(make)
{
this.make = make;
this.noises = ["vroom", "woosh"];
this.addNoise();
}
Car.prototype.addNoise = function() {
this.noises.push("wham");
}
var myCar = new Car("honda");
console.log(myCar.noises[2]);