代码之家  ›  专栏  ›  技术社区  ›  Peter

创建并传递带有参数/设置/选项的JavaScript对象

  •  0
  • Peter  · 技术社区  · 8 年前

    我正在尝试将一些参数/设置/选项传递给我的外部脚本。这些参数必须在HTML文档中显示的脚本标记中。我希望默认设置包括在外部脚本中,但如果 person

    $(document).ready(function() {
    // Default settings to be overwritten
    var def_person = {
      firstName: "John",
      lastName: "Doe",
      age: 50,
      eyeColor: "blue"
    };
    
    var person = Object.assign({}, def_person, newPerson);
    document.getElementById("demo").innerHTML = person.firstName + " " + person.lastName + ". He is " + person.age + " years old!";
    
    });
    <!DOCTYPE html>
    <html>
    <head>
    <!-- Will not work if included in head -->
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript" src="script.js"></script>
    </head>
    <body>
    
    <p>Creating and passing a JavaScript Object.</p>
    
    <p id="demo"></p>
    
    <script>
      newPerson = { 
      	firstName : 'Mr.',
      	lastName : 'Livingston',
      	age : 42
    }
    </script>
    
    
    </body>
    </html>
    2 回复  |  直到 8 年前
        1
  •  0
  •   Steven Spungin    8 年前

    使用 Object.assign

    var def_person = {
      firstName: "John",
      lastName: "Doe",
      age: 50,
      eyeColor: "blue"
    };
    
    function updatePerson(newPerson) {
      var person = Object.assign({}, def_person, newPerson)
      // or {...def_person, ...newPerson}
      document.getElementById("demo").innerHTML = person.firstName + " " + person.lastName + ". He is " + person.age + " years old!";
    }
    
    
    function init() {
      updatePerson({})
    }
    
    // Testing
    init()
    updatePerson({
      firstName: 'Mr.'
    })
    <div id='demo'></div>

    通过全局

    如果要将参数传递给脚本,而不在脚本加载后调用函数,请在内联脚本中将它们定义为全局参数,并让外部脚本读取它们。

    newPerson 在窗口中定义。

    <script>
       newPerson = {firstName:'Mike'}
    </script>
    
    <script src='aScript.js'></script>
    

    新人

        2
  •  0
  •   Jakub    8 年前

    window 反对?

    window.person = {
        firstName:"John",
        lastName:"Doe",
        age:50,
        eyeColor:"blue"
    };
    

    是当前浏览器选项卡的全局对象,因此可以通过它传递某些内容。但这是一种老套的解决方案。

    然后你可以通过 window.person

    推荐文章