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

时间:2015-01-05 17:17:57

标签: javascript html function object input

大家好^^我想使用函数创建输入,但是喜欢对象(用于创建可自定义的输入),之后将它们分配给变量,例如“name”。 之后,我想使用他们的功能(创建和检查),第一个在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>

1 个答案:

答案 0 :(得分:2)

全球符号&#34;名称&#34;是window对象的固有属性,浏览器不允许您将其更改为除字符串之外的任何内容。

您可以使用其他名称(例如&#34; naem&#34;),事情应该可以正常使用。当然,存在选择已经使用的名称作为window对象的另一个内在的风险。这整个情况是一个很好的对象课程,说明为什么JavaScript客户端代码中的全局变量是不受欢迎的:环境是潜在冲突的雷区,就像你所遇到的那样。