var s= {type: "beetle", price : "xxx", popular: "yes" ,.... };
如果必须删除s
的所有属性,应该怎么做?
应该是delete s.type; delete s.price; delete s.popular
..依此类推。
还是s = null;
?
还是s
超出范围会删除属性?
答案 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。
所以这些值的行为实际上有很大不同。