JavaScript—父类和子类/对象的此问题
JavaScript this issue with parent and child classes/objects
我不太确定如何用语言解释它,所以这里有一些示例代码来展示我试图实现的目标:
function carFactory(){
this.wheelsPerCar = 4;
this.car = function() {
this.wheels = [];
this.addWheels = function(){
for(var i = 0; i < this.wheelsPerCar; i++){
var wheel = new this.wheel();
this.wheels.push(wheel);
}
};
this.wheel = function(){
};
};
};
var cf = new carFactory();
var myCar = new cf.car();
myCar.addWheels();
当我打印Car.wheels时,我会得到一个空数组。我想这是因为这辆车超出了范围。我认为我可能设计得完全错误,因为我没有太多地使用JavaScript类和对象。
你说得对。wheelsPerCar
不在车上,它在工厂里。
您可以将this.wheelsPerCar = 4;
更改为var wheelsPerCar = 4;
,然后只使用wheelsPerCar
而不使用this
,它将在范围内。
carFactory
实例和car
实例没有父子关系。它们是一起定义的,但没有类继承。
您可以通过两种方式将wheelsPerCar
属性公开给内部car
实例:
- 将
carFactory
的一个实例传递给car
构造函数 - 在
car
作用域中设置一个var wheelsPerCar = this.wheelsPerCar
变量,以便它可以在不使用this
的情况下访问它
this.addWheels = function(){
debugger;
for(var i = 0; i < this.wheelsPerCar; i++){
var wheel = new this.wheel();
this.wheels.push(wheel);
}
};
this.wheelsPerCar未定义,0<未定义,评估为false。您想先在JavaScript中阅读这个Scope和this。此外,您应该能够使用任何浏览器对此进行调试。
相关文章:
- node.js for循环在函数调用返回之前进行迭代,从而产生对象问题
- Safari 和 IE 中的 JavaScript 日期对象问题
- Knockoutjs 绑定对象问题
- Angular2 奇怪的硬编码对象与 http.get 对象问题
- Javascript 循环 + 对象问题:如何使用循环获取对象中的必需项
- 全局对象问题
- 量角器页面对象问题
- JavaScript对象问题
- 嵌套循环未形成完整对象 - 问题
- ExpressJS PUT方法未定义的对象问题
- 显示对象的对象问题
- React-Router的历史对象问题
- javascript的对象问题
- javascript中的对象问题
- Javascript对象问题
- JavaScript:对象问题
- 谷歌图书API JSON对象问题
- WebMethod返回JSON对象问题
- 对象问题中的 Jquery 对象
- Javascript 对象问题