当在一个对象上特别定义只读属性,并试图在原有的对象基础上分配另一个对象时,Object.assign
似乎并不关心目标属性是否是只读的:
var myObj = {
firstName: "Jimbo",
lastName: "Smythe"
};
Object.defineProperty(myObj, "fullName", {
get: function () {
return this.firstName + " " + this.lastName;
}
});
Object.assign(myObj, {
fullName: "Jimbo T. Smythe"
});
这会导致以下异常:
类型错误:不能为仅有getter的#设置fullName属性
这不是 Object.assign
中的一个bug吗?
完整的示例在这里:https://jsfiddle.net/fa8j7p5j/
Set(to, nextKey, propValue, true)
中的最后一个true
表示如果失败就抛出 TypeError。 - Yury Tarabanko