gpt4 book ai didi

javascript - 关于OOP的一些问题

转载 作者:行者123 更新时间:2023-12-02 18:44:16 25 4
gpt4 key购买 nike

我有一个名为时钟的对象。

我有一个名为 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

最佳答案

避免绑定(bind) 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 事件的处理程序)。

这个示例通过利用闭包来工作,这是 Javascript 中一个非常重要的概念,您应该阅读(Google 一下)。

关于javascript - 关于OOP的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16565023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com