删除Javascript并使其无效

时间:2018-10-05 08:55:33

标签: javascript

var s= {type: "beetle", price : "xxx", popular: "yes" ,.... };

如果必须删除s的所有属性,应该怎么做?

  • 应该是delete s.type; delete s.price; delete s.popular ..依此类推。

  • 还是s = null;

  • 还是s超出范围会删除属性?

3 个答案:

答案 0 :(得分:0)

在MDN中,它说:“ JavaScript删除运算符从对象中删除一个属性;如果不再保存对同一属性的引用,则该属性最终将自动释放。”

因此将一个对象设置为空对象是完全不同的,而另一个对象将不起作用,因为s不是任何对象的属性。

答案 1 :(得分:0)

当您将属性设置为null时,该属性仍然存在,但没有任何值,但是如果删除它,它将不再存在。

答案 2 :(得分:0)

它们根本不一样。删除car的{​​{1}}属性仍将其保留为对象-公认这是一个“空”对象,没有其自身的属性,但是与s的值有很大不同。一方面,null仍然是一个对象,并委托给{},所以可以访问诸如Object.prototype(内部用于强制转换为字符串值)和{{1} }-s.toString()只是一个原始值,您根本无法调用任何方法。另外,如果s.hasOwnProperty(propname)强制为布尔值(例如,如果执行null,则变为{},而true强制为false。

所以这些值的行为实际上有很大不同。