javascript - 为什么 object.[[Prototype]] 在 Chrome 开发者工具中不起作用?

标签 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]];

最佳答案

因为你试图以错误的方式访问原型(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); 调用带有参数 3addVertex 函数(它只会改变 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/

相关文章:

intellij-idea - 如何使用 angular-cli webpack 调试 Angular 应用程序?

javascript - 从嵌套对象中删除空值和 null 值 (ES6) - 清理嵌套对象

javascript - 单击链接时使用 javascript 获取表格行的内容

css - 谷歌浏览器在按钮用户代理样式的焦点状态上显示黑色边框

javascript - 开发工具中的缓慢光栅化

apache - 可靠地测试服务器是否压缩内容

google-chrome - 如何在 Google Chrome 中阻止页面自动刷新?

javascript - contentEditable div 替换 url 链接

javascript - 如何将选定的下拉项保存到数据库表

javascript - Jquery - 使用来自选择的数据属性更改背景图像