对象对象没有正常工作
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
和
然后 proto
在 prototype
里面找到 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())
我了解了 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
和
然后 proto
在 prototype
里面找到 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())