繁体   English   中英

Javascript中的函数范围接受对象作为参数

[英]Function Scope in Javascript accepting object as parameter

示例函数,它接受对象作为参数并以两种不同方式修改对象属性。 首先使用。 (点)表示法,该表示法在函数调用之外,其次是创建新哈希。

function myFunc(theObject) 
{   
    theObject.make = "Toyota";
    theObject = {make: "Ford", model: "Focus", year: 2006};
        console.log(theObject.make); // logs "Ford" 
} 
var mycar = {make: "Honda", model: "Accord", year: 1998}; 
    console.log(mycar.make); // logs "Honda" 
myFunc(mycar); // Call function to change the 'make' 
    console.log(mycar.make); // logs "Toyota"
  1. theObject.make =“ Toyota”和theObject = {make:'Ford'}有什么区别
  2. 为什么“ Toyota”在外部功能可见,而在“ Ford”之外可见

您正在调用传递对象引用的myFunc(mycar)函数。 当你在做

theObject.make = "Toyota";

您正在直接更改存储对象的值(即对象状态)。 再次创建对象时,相同的引用指向新对象,该范围仅限于该函数。 避开myFunc(mycar):现有引用仍然指向旧对象,该对象的状态已通过function myFunc(theObject)进行了更改

简而言之:

theObject.make = "Toyota"; //Here we are changing the state
theObject = {make: "Ford", model: "Focus", year: 2006};// Here we are crating new Object

范围仅限于功能。

the.Object =“ Toyota”追踪现有对象状态和theObject = {make:'Ford'}的区别在于创建新对象

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM