gpt4 book ai didi

javascript - javascript 原型(prototype)继承如何用于数组、函数

转载 作者:行者123 更新时间:2023-12-03 04:05:10 25 4
gpt4 key购买 nike

我需要了解 Array 对象如何获取对 Object 的引用。

例如,当我创建 var arr = []; 时,它具有 Array.prototype ---> Object.prototype -- ->

我想在下面的示例中实现上述目标:

假设我有一个函数xyz(),其中xyz.prototype.somefunction = function() { }

我有另一个函数 abc(),其中 abc.prototype.anotherfunction = function() { }

当我创建 abc() 的对象时(如 var obj = new abc()) - 我希望它有一个像 obj 一样的原型(prototype)链 ---> abc.prototype ---> xyz.prototype ---> object.prototype --->

请建议执行此操作的最佳方法。

最佳答案

function xyz() {}
function abc() {}
var p = new xyz();
abc.prototype = p;

var o = new abc();
o.__proto__ === p // true
o.__proto__.__proto__ === xyz.prototype // true
o.__proto__.__proto__.__proto__ === Object.prototype // true
o.__proto__.__proto__.__proto__.__proto__ === null // true

或者:

function xyz() {}
function abc() {}
var p = Object.create(xyz.prototype);
abc.prototype = p;

var o = new abc();
o.__proto__ === p // true
o.__proto__.__proto__ === xyz.prototype // true
o.__proto__.__proto__.__proto__ === Object.prototype // true
o.__proto__.__proto__.__proto__.__proto__ === null // true

或者:

class xyz {}
class abc extends xyz {}

var o = new abc();
o.__proto__.__proto__ === xyz.prototype // true
o.__proto__.__proto__.__proto__ === Object.prototype // true
o.__proto__.__proto__.__proto__.__proto__ === null // true

或者:

function xyz () {}
const abc = {
__proto__: Object.create(xyz.prototype)
}

abc.__proto__.__proto__ === xyz.prototype // true
abc.__proto__.__proto__.__proto__ === Object.prototype // true
abc.__proto__.__proto__.__proto__.__proto__ === null // true

或者:

function xyz () {}
function abc() {}
Object.setPrototypeOf(abc.prototype, xyz.prototype);

var o = new abc();
o.__proto__.__proto__ === xyz.prototype // true
o.__proto__.__proto__.__proto__ === Object.prototype // true
o.__proto__.__proto__.__proto__.__proto__ === null // true

关于javascript - javascript 原型(prototype)继承如何用于数组、函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44594122/

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