嗨,大家好,我说我有这个:
function example()
{
this.x = 0;
this.y = 32;
this.example2 = function()
{
}
}
我如何能够从example2中访问example.x / example.y?
我问,因为我正在创造我的第一个真实的' html5游戏,我计划拥有一个重要的游戏对象和模型'在那个对象内(玩家,敌人等)。除非有更好的方法做到这一点......我已经完成了工作原型,但它们都在一个文件中而且没有真正的结构化。
答案 0 :(得分:1)
像这样:
function example()
{
this.x = 0;
this.y = 32;
this.example2 = function()
{
console.log(this.x); // 0
}
}
答案 1 :(得分:1)
如果您只反对计划拥有1个父级,则可以这样做:
function example() {
this.x = 0;
this.y = 32;
this.example2 = new function() {
this.parent = undefined;
}
this.example2.parent = this;
}
var firstobject = new example();
// Saving a reference to example2.
var example2Object = firstobject.example2;
// Because of parent variable, you can access example2 parent without needing to have the parent object in a variable.
console.log(example2Object.parent.x);
console.log(example2Object.parent.y);
有很多方法可以设置parent
,这只是一个例子。
答案 2 :(得分:0)
如果您希望您的方法在隔离使用时仍然引用其原始对象,则需要一个闭包:
function example()
{
this.x = 0;
this.y = 32;
this.example2 = proxy(this, function() {
console.log(this.x);
});
}
var x = new example(),
fn = x.example2; // isolate method
fn(); // this will still work
它正在使用此辅助函数将函数绑定到对象:
// helper function to bind fn to ctx (context)
function proxy(ctx, fn)
{
return function() {
return fn.apply(ctx, arguments);
}
}