javascript - 为什么我不能使用全局变量中的对象函数?

标签 javascript html function object input

大家好^^
我想使用函数来创建输入,但像对象(用于创建可自定义的输入)一样,之后将它们分配给变量,例如“名称”。 之后我想使用它们的函数(创建和检查),第一个函数在 HTML 代码的 div“userInfo”中插入输入,第二个函数检查输入中的值

问题是,当我将一个对象分配给全局变量“name”,然后使用它们的函数时,浏览器的控制台告诉我 name.create() 不是一个函数,我无法使用它

抱歉我的英语很差,而且我的 JavaScript 菜鸟水平 xD
谢谢大家^^

function createAll() {

  name = new textInput("nameInput", 8, 24, "a-Z0-9", "required");
  concatFirst += name.create();
  document.getElementById("userInfo").innerHTML = concatFirst;
  console.log(JSON.stringify(name));
}

function textInput(idInput, minlenght, maxlenght, req, requiredOption) {

  this.idIn = idInput;
  this.minLong = minlenght;
  this.maxLong = maxlenght;
  this.reqCha = req;
  this.requiredOpt = requiredOption;
  this.create = function () {
  return "<p> \
          <input id='" + this.idIn + "' pattern='[" + this.reqCha + "]{" + this.minLong + ",}' maxlenght='" + this.maxLong + "' " + " onchange='name.check()' onmouseover='name.check()' " + this.requiredOpt + " ></input> \
          </p>";
  }
  this.check = function () {

    document.getElementById(this.idIn).style.boxShadow = "0 0 10px 3px green";
  }
}
<html>
  <body onload="createAll();">
    <div id="mainForm">
        <!-- First Form -->
        <div id="userInfo">
        </div>
    </div>
  </body>
</html>

最佳答案

全局符号“name”是window对象的固有属性,浏览器不允许您将其更改为字符串以外的任何内容。

您可以使用不同的名称(例如“naem”),并且一切都会正常。当然,选择已经用作 window 对象的另一个内在名称的名称是有风险的。整个情况是一个很好的实例教训,说明为什么 JavaScript 客户端代码中的全局变量是不可取的:环境是一个潜在冲突的雷区,就像您遇到的那样。

关于javascript - 为什么我不能使用全局变量中的对象函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27784567/

相关文章:

javascript - 水平无序列表的新行

html - 如何在动态大小的绝对 div 中包含 "overflow: auto;"滚动条的宽度?

c++ - 定位函数的函数定义

javascript - 如何使用 CSS 一次显示和隐藏多个元素?

javascript - 如何从 blazeComponent 中的不同模板调用函数?

javascript - 使用 Moment.js 在 JS 中格式化日期

html - 如果一个元素位于可变宽度包装器中,则垂直对齐两个元素

PHP - 过滤表中的数据

c++ - C++中的函数与变量声明

c - 通过函数求解经过的日期和天数