我正在尝试使用本教程从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]];
答案 0 :(得分:1)
因为您尝试以错误的方式访问原型,所以它应该是g.__proto__
(但您不应该使用g.__proto__
,它已被弃用且不适用于所有对象)或Object.getPrototypeOf(g)
:< / p>
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
“我想执行一些新的Graph(3),并期望顶点在数组中有3个。”
只需使用g.addVertex(3);
来调用带有参数addVertex
的{{1}}函数(它只会更改3
数组)。这是一个例子:
g.vertices
但你也可以将参数传递给构造函数,如下所示:
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);