javascript - 为对象字面量设置原型(prototype)

标签 javascript prototype prototypal-inheritance

假设我有以下代码;

var A = {a:10};
var B = {b:20};
B.prototype = A;
alert(B.a);

我对 B.a 越来越不确定。 难道我做错了什么?如何设置对象字面量的原型(prototype)?

我知道如何为 Constructor 对象做。所以下面的代码可以完美运行

function A(){this.a=10}
function B(){this.b=20}
B.prototype = new A();
b = new B;
alert(b.a);

我如何为对象字面量做这件事?

最佳答案

对象继承自它们的构造函数的 原型(prototype)属性,而不是它们自己的。构造函数的原型(prototype)分配给内部 [[Prototype]]在某些浏览器中可用的属性为 __proto__属性(property)。

所以b要继承a,需要把a放在b的继承链上,例如

经典原型(prototype)继承:

var a = {a: 'a'};
function B(){}
B.prototype = a;

var b = new B();
alert(b.a); // a

使用 ES5 对象创建:

var a = {a: 'a'};
var b = Object.create(a);

alert(b.a); // a

使用 Mozilla __proto__:

var a = {a: 'a'};
var b = {};
b.__proto__ = a;

alert(b.a); // a

关于javascript - 为对象字面量设置原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15472005/

相关文章:

javascript - 解码(javascript)源 map

c - main() 之前的结构体原型(prototype)

Javascript - 如果父类(super class)构造函数采用参数,如何初始化父类(super class)

javascript - 为什么 'abc' .hasOwnProperty ('length' ) == true

javascript - 单击另一个中的处理程序

javascript - ESLint 配置问题

javascript - 如何在 jQuery 中获取相对于父级的 offset()?

javascript - 列出窗口对象的所有属性?

javascript - 将对象及其方法分配给原型(prototype)

javascript - 如何在 JavaScript 中从原型(prototype)创建对象?