【发布时间】:2013-05-10 00:33:45
【问题描述】:
我有一个叫做时钟的对象。
我有一个称为时间的对象的方法。
如果我在 time 方法中使用 this.propertyName,这会将属性赋予我的时钟对象,对吗?但是如果有一个 if/else 语句(在 time 方法本身内),例如,它需要在之前运行 属性的值可以赋值吗?
if(t.getHours() >= 12){
this.ap = "AM";
}else{
this.ap = "PM";
}
所以,如果我使用像 this.ap = "hi" 这样的简单值,则可以正常工作。它将属性赋予我的对象。如果我有如上所示的语句,则该属性未定义。解决这个问题的最佳方法是什么?
另外,还有一个简单的问题,因为我才刚刚开始使用自己的对象。如果我有一个具有 3 个单独方法的对象,并且我想在 1 个方法中声明的所有方法中使用一个值,则将其分配为我的对象的属性允许我执行此操作。我说的对吗?
因此,如果我在一种方法中使用了 var property = "",那么在我的其他方法中访问它的唯一方法就是返回它。但是将属性设置为对象可以解决这个问题吗?我意识到我可以对此进行试验,但我宁愿只知道正确的方法。
编辑:这是一个例子。显然我误解了一些东西。我似乎无法从方法中定义属性。
var clock = {};
clock.test1 = "test 1.";
clock.time = function(){
clock.test = "test 2.";
if(t.getHours() >= 12){
clock.ap = "PM";
}else{
clock.ap = "AM";
}
}
alert(clock.test1); //success
alert(clock.test); //returns undefined
alert(clock.ap); //returns undefined
【问题讨论】:
-
您需要展示更多代码。
this的绑定在 JavaScript 中有点棘手。通常的解决方案是添加一个名为that或self或类似于您的对象的属性,并在创建对象时为其分配this。这样,您始终可以引用对象本身。 -
=>是语法错误,应该是>=。t.getHours中的t是什么? (你确定getHours不是一个函数,可以用t.getHours()调用吗?) -
^感谢您指出这一点,我确实是想将 getHours 作为函数输入。
-
好的。解决了这些问题,它应该可以工作。也就是说,如果
this.ap = "hi";有效,并且您将 if/else 结构 放在同一个地方,那么假设t在范围内并且是具有getHours()方法的对象,它也会起作用.如需更多帮助,请显示 if/else 出现的所有函数,并显示您如何调用该函数。 -
关于您的编辑,您需要实际调用
clock.time()函数,然后再尝试使用在该函数中创建的clock.test和clock.ap等属性 - 该函数不会自动运行。 (而且您还没有解释t对象在t.getHours()中是什么 - 它是在哪里定义的?)
标签: javascript oop object methods properties