首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用类中的变量...当“这。”不起作用,因为我们在一个函数中

引用类中的变量...当“这。”不起作用,因为我们在一个函数中
EN

Stack Overflow用户
提问于 2012-02-12 01:16:43
回答 1查看 154关注 0票数 0

假设有一个类机器人。

有变量hand lefthandhand righthandleg leftlegleg rightlegleghand类包含int lengthint width

代码语言:javascript
复制
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())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-12 14:15:37

在Javascript中,您可以定义被调用函数的上下文。我更擅长用例子来解释这一点,所以它是这样的:

代码语言: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, [...]]]);

如果这已经回答了你的问题,请务必接受我的回答。

编辑:这是另一个例子

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9242236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档