对象对象没有正常工作

Object object is not working as it should

我了解了 prototype 和 proto,我想我理解了,但这没有意义?有人可以向我解释为什么像这样直接访问对象不起作用吗?

function createObj() {
  this.name = 'user';
  this.prezime = 'user';
}

var obj1 = new createObj();

createObj.prototype.__proto__.toString = function () {
  return 'works';
}   //obj1.toString() returns 'works'   

createObj.__proto__.__proto__.toString = function () {
  return 'this works as well';
}   //obj1.toString() returns 'this works as well  '

//Then why this doesn't work: 

Object.toString = function () {
  return true;
}

根据我的理解,我正在直接更改对象 object

所以当我做 obj1.toString() 不应该去 prototype 和 然后 protoprototype 里面找到 toString() 就像上两个例子一样?

这是因为您在 Object 构造函数 上设置 属性,而不是 Object 原型 当你说 Object.toString = ... 时。

如果将 Object.toString = ... 更改为 Object.prototype.toString = ...,您将获得所需的结果:

function createObj() {
  this.name = 'user';
  this.prezime = 'user';
}

var obj1 = new createObj();

createObj.prototype.__proto__.toString = function() {
  return 'works';
} //obj1.toString() returns 'works'   

console.log(obj1.toString());

createObj.__proto__.__proto__.toString = function() {
  return 'this works as well';
}

console.log(obj1.toString());

Object.prototype.toString = function() {
  return true;
}

console.log(obj1.toString())