【问题标题】:How to use a Boolean in Javascript Constructors?如何在 Javascript 构造函数中使用布尔值?
【发布时间】:2014-05-17 18:56:13
【问题描述】:

我有一个构造函数,我想做一些我似乎无法开始工作的事情。

  • 我想强制使用带有行星参数的布尔值。我可以使用表单验证来手动格式化它,但我无法弄清楚如何在 JS 中进行格式化。
  • 我想在这个构造函数中插入一个日期。同样,我可以在前端处理它,但我想在这里处理它。

    var telescope = [];
    
    function newStar(name, color, planet) {
        this.name = name
        this.color = color
        this.planet = planet // interpreted as "Is a planet?" true/false
        telescope.push(this)
    }
    var a = new newStar("sol", "yellow", false)
    var b = new newStar("mars", "red", true)
    console.log(telescope)
    

【问题讨论】:

  • 嗯,什么?试着解释一下你想要做什么?
  • 你知道 javascript 是所有的前端,对吧? (NodeJS 除外)
  • @RUJordan 是的,我知道 JS 是前端。我不打算将代码实现到一个成熟的项目中。我希望自己使用它。
  • @adeneo 我希望告诉 JS 期待一个布尔值,而不是简单地理解一个布尔值(我什至不确定这在没有一些外部结构/资源的情况下在技术上是否可行)。

标签: javascript object constructor boolean


【解决方案1】:

如果您想检查 ECMAScript(通常称为 JavaScript)中变量的数据类型,您可以这样做:

if (typeof planet !== 'boolean') {
    throw TypeError('planet should be Boolean');
}
// do something here

对于“我想在这个模型中插入一个日期”,不知道你在问什么?

【讨论】:

  • 所以,如果我理解正确的话,没有办法告诉构造函数本身一个值必须是某种类型。如果您正在寻找特定的东西,您只需编写一个 if 语句来检查它。对吗?
  • 是的,在 ECMAScript(通常称为 JavaScript)中,您不能将变量的值限制为某种类型,因为它是一种动态类型语言。
  • 谢谢您,先生。你是昆都族和学者;)
【解决方案2】:

您可以在其中添加日期;

var telescope = [];

function newStar(name, color, planet) {
    this.name = name
    this.color = color
    this.planet = planet // interpreted as "Is a planet?" true/false
    this.create_date = new Date();
    telescope.push(this)
}
var a = new newStar("sol", "yellow", false)
var b = new newStar("mars", "red", true)
console.log(telescope)

但是我首先不明白。你能解释一下你想要什么吗?

【讨论】:

  • 对于日期部分,这正是我想要的。我在调用函数时一直尝试使用 Date() ,认为它在构造函数中不起作用。谢谢!
猜你喜欢
  • 2017-04-01
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
  • 2015-09-18
  • 2018-02-20
  • 2023-03-10
相关资源
最近更新 更多