我想知道使用对象文字与使用原型之间是否存在实际差异,或者它是否真的只是偏好?我只是问,因为当我读到它听起来好像文字只是表示原型信息的更好方式,因为根据JavaScript:好格局,道格拉斯克罗克福德"对象... [有]隐藏的链接到原型对象。在我投票之前,我确实看到了这个话题。我不确定ECMA6标准是否有变化,但答案是否正确。我也问过,因为如果不是这样的话,我不知道Sandbox模式是如何工作的。感谢您阅读!
运行此基本脚本会显示文字(至少在使用object.create()时)与具有覆盖函数功能的原型类似。如果父函数发生更改,则在运行时更改继承的函数属性,假设函数未被覆盖。此外,如果从子对象中覆盖父对象,则它对父对象没有影响。
var my_literal = {}, my_object_create;
my_literal.calc = (function (x, y) {
'use strict';
return x * y;
}(1, 3));
my_object_create = Object.create(my_literal);
console.log(my_object_create.calc);
console.log(my_literal.calc);
my_literal.calc = 'Over ride';
console.log(my_object_create.calc);
console.log(my_literal.calc);
my_object_create.calc = (function (x, y) {
'use strict';
return x * y;
}(2, 4));
console.log(my_literal.calc);
console.log(my_object_create.calc);