[英]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"
您正在调用传递对象引用的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.