为什么反对。[[Prototype]]在Chrome开发者工具中不起作用?

时间:2017-09-30 20:46:09

标签: javascript google-chrome-devtools

我正在尝试使用本教程从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]];

1 个答案:

答案 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);