我正在尝试通过使用本教程从 Mozilla ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain ) 调用对象的 [[Prototype]]
方法,但它似乎不起作用。
有人知道为什么吗?
谢谢,
部分代码:
function Graph() {
this.vertices = [];
this.edges = [];
}
Graph.prototype = {
addVertex: function(v) {
this.vertices.push(v);
}
};
var g = new Graph();
g.[[Prototype]];
最佳答案
因为你试图以错误的方式访问原型(prototype),它应该是 g.__proto__
(但你永远不应该使用 g.__proto__
,它已被弃用并且不适用于所有对象)或 Object.getPrototypeOf(g)
:
function Graph() {
this.vertices = [];
this.edges = [];
}
Graph.prototype = {
addVertex: function(v) {
this.vertices.push(v);
}
};
var g = new Graph();
console.log(g.__proto__); // get access to prototype
console.log(Object.getPrototypeOf(g)); // get access to prototype
更新
“我想执行一些实时的 new Graph(3),并期望顶点在数组中有 3 个。”
只需使用 g.addVertex(3);
调用带有参数 3
的 addVertex
函数(它只会改变 g.顶点
数组)。这是示例:
function Graph() {
this.vertices = [];
this.edges = [];
}
Graph.prototype = {
addVertex: function(v) {
this.vertices.push(v);
}
};
var g = new Graph();
g.addVertex(3);
console.log(g.vertices);
但是您也可以将参数传递给构造函数,如下所示:
function Graph(param) {
this.vertices = [param];
this.edges = [];
}
Graph.prototype = {
addVertex: function(v) {
this.vertices.push(v);
}
};
var g = new Graph(1);
var h = new Graph(2);
console.log(g.vertices);
console.log(h.vertices);
关于javascript - 为什么 object.[[Prototype]] 在 Chrome 开发者工具中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46506898/