Javascript 关于OOP的几个问题
我有一个物体叫时钟 我有一个方法,叫做时间 如果我在time方法中使用this.propertyName,这将为我的时钟对象提供属性,对吗?但是如果有一个if/else语句(在time方法本身内),例如,它需要在 是否可以指定该属性的值Javascript 关于OOP的几个问题,javascript,oop,object,methods,properties,Javascript,Oop,Object,Methods,Properties,我有一个物体叫时钟 我有一个方法,叫做时间 如果我在time方法中使用this.propertyName,这将为我的时钟对象提供属性,对吗?但是如果有一个if/else语句(在time方法本身内),例如,它需要在 是否可以指定该属性的值 if(t.getHours() >= 12){ this.ap = "AM"; }else{ this.ap = "PM"; } 因此,如果我使用这样一个简单的值。ap=“hi”,这很好。它将属性赋予我的对
if(t.getHours() >= 12){
this.ap = "AM";
}else{
this.ap = "PM";
}
因此,如果我使用这样一个简单的值。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
避免绑定此出现问题的通常方法是执行以下操作:
var MyObject = function() {
var self = this;
self.someProperty = "foo";
self.someMethod() {
self.someProperty = "bar";
}
}
var anInstance = new MyObject();
console.log(anInstance.someProperty); // foo
anInstance.someMethod();
console.log(anInstance.someProperty); // bar
这就避免了这个
不是您所期望的那样的问题,这取决于您调用方法的方式(例如,将方法用作某个DOM事件的处理程序)
本例通过利用
闭包,这是Javascript中一个非常重要的概念,您应该在上面阅读(Google it)。您需要显示更多的代码。这个
的绑定在JavaScript中有点棘手。通常的解决方案是添加一个名为的属性,该属性
或self
或类似于对象的属性,并在创建对象时为其指定此
。这样,您总是有一个对对象本身的引用。=>
是一个语法错误,它应该是=
。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()