js原型链问题

var a = {};
a.prototype = {b:'heheh'}
console.log(a.b)

为什么a.b 是undefined呢??

阅读 2.8k
5 个回答

这种情况其实是为 a 对象添加了一个 prototype 属性

var a = {prototype:{b:'heheh'}};

并不是对象的原型,我想你需要如此如此:

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

或者如此如此:

function A(){}
A.prototype = {b:'heheh'}
var a = new A;
a.b

只有构造函数才有原型链概念,而 a 是对象。

对象并没有prototype属性.
对象的属性是__proto__, 是一个不可枚举的属性.
prototype属性是针对于构造函数的.
一个是函数, 一个是对象. 不可混淆.

var a = {};
a.prototype = {b:'heheh'}   //给a添加一个属性prototype,值为一个对象
console.log(a.prototype.b)  //要取就要这样取 'heheh'

你本意是想添加原型链属性,原型链希望有助。

区分一下prototype和__proto__

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题