假設我有這樣的事情在JavaScript:JavaScript:將屬性添加到密封對象應該會引發typeerror異常?
var obj = { name: "Luis" };
Object.seal(obj);
obj.address = "Fx"; //what should happen here?
那麼,什麼是正確的行爲?這不是嚴格模式,所以我認爲obj.address行將被忽略。但是,這不是因爲它在Chrome中拋出。我在看的V8測試,它似乎像它應該嚴格模式只拋出:
object.seal測試代碼:http://code.google.com/p/v8/source/browse/branches/bleeding_edge/test/mjsunit/object-seal.js?spec=svn7379&r=7379
,這裏是從該文件中的一些代碼:
Object.seal(obj);
// Make sure we are no longer extensible.
assertFalse(Object.isExtensible(obj));
assertTrue(Object.isSealed(obj));
// We should not be frozen, since we are still able to
// update values.
assertFalse(Object.isFrozen(obj));
// We should not allow new properties to be added.
obj.foo = 42;
assertEquals(obj.foo, undefined);
順便說一句,有從嚴格模式的測試,我的例子將明確拋出:http://code.google.com/p/v8/source/browse/branches/bleeding_edge/test/mjsunit/strict-mode.js?spec=svn7250&r=7250
任何想法?
你爲什麼認爲它不應該拋出非嚴格的代碼? – 2011-03-29 22:11:00
看看kangax鏈接到評論規範。 – 2011-03-30 09:25:41