我有一个名为clock的对象。
我有一个叫做time的对象的方法。
如果我在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
答案 0 :(得分:2)
避免绑定this
问题的常用方法是执行以下操作:
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
这避免了this
不是你预期的问题,这可能会发生,这取决于你如何调用方法(例如,使用方法作为某些DOM事件的处理程序)。
此示例的工作原理是利用closure
,这是Javascript中一个非常重要的概念,您应该阅读它(Google it)。