gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:07:00 24 4
gpt4 key购买 nike

我正在尝试通过使用本教程从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com