为什么我不能在javascript中使用Object Literals中的原型?

时间:2016-12-14 12:52:01

标签: javascript prototypejs

我很高兴在javascript中学习原型并发现很多文章,但是我无法理解为什么我无法在javascript中使用Object文字中的原型。众所周知,一切都是从Object继承的,所以在这种情况下

rpm -i --nodeps

如果我能够在函数中使用原型,为什么我不能在对象文字中使用原型,例如下面的例子

--nodeps

我已经完成了所有这个问题,但它真的没有回答为什么不能在javascript中的对象文字中使用原型的原因。以下是一些参考资料

refrence 1

refrence 2

refrence 3

1 个答案:

答案 0 :(得分:3)

首先,.prototype属性属于function对象。您无法从普通对象实例访问它。基本上,构造实例的内部.prototype时将使用与构造函数关联的[[prototype]]属性。这里有一个实例,如果你想将函数添加到它的原型链中,那么你必须通过

来修改它。
var obj = { firstname: 'foo', lastname:'bar' };
var pro = Object.getPrototypeOf(obj);
pro.getMethod = function () {
  console.log('this is a function');
};

正如@bergi指出的那样,如果我们遵循上述方法,就有可能将getMethod添加到所有实例中。但为了避免你可以选择做,

var obj = { firstname: 'foo', lastname:'bar' };
Object.setPrototypeOf(obj, Object.create({getMethod : function(){
  console.log("Hello");
}}));

console.log(obj.getMethod()); //"Hello"