仅为一个实例指定功能

时间:2012-02-15 14:28:39

标签: javascript

我是JavaScript的新手,因此不太了解它的对象模型,但据我所知,我必须做类似的事情。

function set_test(text) { this['test'] = text; };
a = {};
text = 'ok';
a.prototype.ok = set_test(text);
alert(a['test']); #Should be 'ok'
text = 'fail';
a.ok;
alert(a['test']); #Should be 'ok'

有人可以说这里有什么问题吗?

3 个答案:

答案 0 :(得分:1)

默认情况下,对象没有原型,a.prototype.ok = set_test(text);会使ok等于set_test()的{​​{1}}的返回值。

尝试改为this way

undefined

答案 1 :(得分:1)

我认为整个代码都错了。

您会发现,在JavaScript中,函数是对象,您可以根据需要传递它们。执行上下文(this)取决于您调用函数的方式。

如果将函数存储在对象的属性中,然后通过调用obj.fn()来调用它,则执行上下文将设置为obj

另请注意,在将其指定为对象的属性时,不应调用该函数。

function set_test(text) { this['test'] = text; }

var a = {};
a.ok = set_test; // see, no invocation

a.ok('abc');
alert(a['test']); // alerts 'abc'

a.ok('def');
alert(a['test']); // alerts 'def'

答案 2 :(得分:0)

我认为在函数set_test中这个['test']不起作用。因为“这个”不是“一个”。您应该在对象a下定义方法set_test - 然后它将起作用。

我建议您查看Mootools文档 - 有更好的对象模型语法。您还可以查看Mootools源以获得更详细的问题答案和js对象模型