如果将属性分配给Object,是否可以在对象更改时对其进行更改?

时间:2017-05-30 14:14:51

标签: javascript object

我使用以下代码进行基本测试

var A={};
var B={name:"come"};
A.pro=B;
B=null;
//Here A.pro is still point to normal B, not to a null

如果我想在B改变时怎么办,A.pro也会改变?

2 个答案:

答案 0 :(得分:5)

您可以使用匿名功能,例如:

var A = {};
var B = {
  name: "come"
};

A.pro = function() {
  return B
};

// or with arrow function
// A.pro = () => B;

B = null;
console.log(A.pro());

其他方式

如果您想使用B更新A.pro()值,可以使用可选参数,例如:

var A = {};
var B = {
  name: "come"
};

A.pro = function(newVal) {
  (typeof newVal === 'undefined') ? false : (B = newVal);
  return B;
};

B = null;
console.log(A.pro());
A.pro(4);
console.log(A.pro());

答案 1 :(得分:3)

您可以使用嵌套方法和其他对象。

var a = {},
  b = { data: { name: "come" } };

a.pro = b;
console.log(a);

b.data = null;
console.log(a);
.as-console-wrapper { max-height: 100% !important; top: 0; }