我如何从上层作用域访问变量- javascript
How can i access vars from upper scope - javascript
我有一个问题。我怎样才能从原型扩展访问我在特斯拉模型中的变量?
还是我的插件模式错了?
我想把我的应用程序的不同区域分开,而不是把它们都放在一个大文件中
var TeslaModelS = function () {
this.numWheels = 4;
this.manufacturer = 'Tesla';
this.make = 'Model S';
this.Drive.pressGasPedal();
}
TeslaModelS.prototype = function () {
var _this = this;
var Drive = {
go: function () {
// HOW CAN I GET RED AND WRITE ACCESS TO MY VARS IN TeslaModelS ??
console.log(_this.numWheels)
},
stop: function () {
}
}
return {
Drive: {
pressBrakePedal: Drive.stop,
pressGasPedal: Drive.go
}
}
}();
var i = new TeslaModelS();
对于您创建的结构,您不能。我建议使用更正常的结构:
// The constructor function
var TeslaModelS = function() {
this.numWheels = 4;
this.manufacturer = 'Tesla';
this.make = 'Model S';
this.pressGasPedal();
};
TeslaModelS.prototype.pressGasPedal = function() {
console.log(this.numWheels);
};
TeslaModelS.prototype.pressBrakePedal = function() {
};
var i = new TeslaModelS();
但是如果你不想,如果你真的想要那个Drive
对象,你需要为每个实例在一个不同的Drive
对象上创建这些函数的绑定版本:
// The functions you'll bind each time
var Drive = {
go: function() {
console.log(this.numWheels)
},
stop: function() {}
};
// The constructor function
var TeslaModelS = function() {
this.numWheels = 4;
this.manufacturer = 'Tesla';
this.make = 'Model S';
// Create a Drive object for this instance with the functions bound
// to `this`
this.Drive = {
pressGasPedal: Drive.go.bind(this),
pressBrakePedal: Drive.stop.bind(this)
};
this.Drive.pressGasPedal();
}
var i = new TeslaModelS();
相关文章:
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- 查询后websql成功回调无法访问变量
- 无法访问变量
- 从ajax调用成功内部访问变量
- 从子弹出子窗口访问变量
- 下划线模板无法访问变量
- Meteor Iron路由器通过[data]vs[params]访问变量
- CanvasJS-访问变量-访问属性toString的权限被拒绝
- 如何从嵌套函数中访问变量
- 在<%%中定义的访问变量>从<脚本></脚本>
- 自提交表单访问变量javascript
- 如何访问变量
- 稍后在链中访问变量
- 在 Javascript 中访问变量
- 在方法调用对象之外访问变量而不使它们全局化(可能吗?
- 如何从函数/实例外部访问变量
- 从另一个脚本源访问变量
- Meteor:跨所有 Meteor.method的访问变量
- 每次加载页面时,火狐附加组件访问变量
- 在另一个函数中访问变量,返回未定义的 - JavaScript