引用类内的变量..当“;这个"不起作用,因为我们处于函数中
Referring to a variable inside a class... when "this." does not work because we are in a function
假设有一个类机器人。
存在变量hand lefthand
、hand righthand
、leg leftleg
和leg rightleg
。leg
和hand
类包含int length
和int width
。
this.lefthand.length = 100;
this.leftleg.length = 200;
function switch_length () {
this.lefthand.length = 300; //This is wrong. So what can I do instead to refer to lefthand??
this.leftleg.length = 400; //This is wrong. So what can I do instead to refer to leftleg??
}
this.button.addEventlistener ( ... switch_length())
在Javascript中,您可以定义被调用函数的上下文。我更擅长用例子来解释这一点,所以它是这样的:
var something = {
'foobar': 'var 1 value',
'foo': function () {
alert(this.var1);
}
}
var something_else = {
'foobar': 'some completely other value'
}
function bar () {
alert(this.foobar);
}
something.foo(); //alerts 'var 1 value'
bar(); //produces an error
bar.call(something); //alerts 'var 1 value'
bar.call(something_else); //alerts 'some completely other value'
function.call(context, [arg1, [arg2, [...]]]);
如果这已经回答了你的问题,请务必接受我的回答。
编辑:下面是的另一个例子
function create () {
return {
'hand': {
'length': 100
},
'leg': {
'length': 100
}
}
}
function set_length(hand, leg) {
this.hand.length = hand;
this.leg.length = leg;
}
var left = create(),
right = create();
set_length.call(left, 200, 300);
set_length.call(right, 50, 150);
相关文章:
- onclick函数需要双击,因为类分配延迟
- 在Highcharts中,我们可以通过任何方式在渲染图表之前获得plotWidth和plotHeight
- 为什么不'我们在javascript中使用函数参数的数据类型
- 我们如何使用css或JavaScript在i/j上更改句点(点)的颜色
- 我们如何在不更改url的情况下使用锚点点击从一个页面重定向到另一个页面
- 我们怎样才能将内含子J用于一组特定的元素
- 我们如何在互联网断开连接或用户关闭选项卡/浏览器时调用注销servlet
- 在ES6中,模块将导致多个网络调用,因为两个模块不能在单个文件中定义
- 我们可以使用任意的编程语言来动态化HTML页面吗
- 如何获得Bootstrap Datepicker的年和月,因为它在变化
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- ACE编辑器正在删除模块,因为define是't一根绳子
- 未能加载,因为找不到支持的源.当播放HTML5音频元素时
- asp.net MVC,重定向到视图,视图打开新窗口到外部url,它'It’’’’我们被当成一种风景
- 任何人都知道IE7设置或更新/补丁,它可以防止IE因为jquery错误而无法加载页面
- 我们如何在dailymotion播放器的新测试版中播放youtube视频
- 有没有办法调用JavaScript API调用,因为我们可以有PHP curl调用
- 引用类内的变量..当“;这个"不起作用,因为我们处于函数中
- 我们应该用什么替代layerX/layerY,因为它们在webkit中已经被弃用了
- 我们是否应该使用与let相同的变量来使用滥用,因为我们可以