【 在 blitz (blitz) 的大作中提到: 】
: var d1=new Derived("name1",21);
: var d2=new Derived("name2",22);
: d1.name="new name"
: d2.name!=="new name" //true
: 那么请问Derived.prototype=new Base这个语句到底干了什么?如果我把#1那行的代码注掉,d1/d2里仍然会有name字段,尽管是undefined:
: 'name' in d1;//will return true
"name" in d1 -> true
"name" in d2 -> true
"name" in Derived.prototype -> false
"name" in Object.getPrototypeOf(d1) -> false
"name" in Object.getPrototypeOf(d2) -> false
: 这个name显然来自于Derived.prototype.name,但又不是同一个,因为对d1的修改并不影响d2。
({}).hasOwnProperty.call(d1, "name") -> true
--
FROM 183.195.251.*