gpt4 book ai didi

javascript - 一个构造函数的属性是否可以被另一个构造函数继承?

转载 作者:行者123 更新时间:2023-11-30 06:03:27 25 4
gpt4 key购买 nike

使用 javascript,您可以让一个对象从另一个对象继承属性,这样如果在第一个对象上找不到某个属性,就会在第二个对象中搜索它。通过在构造函数上重新分配 prototype 属性,您可以创建许多对象的链来搜索属性。

例如:

var X = function() {};
X.prototype.x = "x";

var Y = function() {};
Y.prototype = new X();
Y.prototype.y = "y";

var z = new Y();
z.z = "z";

///////////////

console.log(z.z); // searches z for property 'z', finds it and returns 'z'

console.log(z.y); // searches z, fails, searches z.[[hidden_prototype]]
// (which is Y.prototype), finds it and returns 'y'

console.log(z.x); // searches z, fails, searches Y.prototype, fails,
// searches Y.prototype.[[hidden_prototype]]
// (which is X.prototype), finds it and returns "x"

我想知道是否可以将其扩展到构造函数的属性,即上面代码中的 XY。例如,有没有办法改变上面的代码,使下面的代码也能工作:

X.val = 42;

console.log(Y.val); // returns 42

如果 Y.[[hidden_​​prototype]] === X,这会起作用,但我不知道当 XY< 时如何设置它 也必须是构造函数。

最佳答案

根据第一个相关link

你可以这样做:

function Y(){}
function X(){}
Y.__proto__=X;
X.val=42;
console.log(Y.val);//42

虽然明显不标准

关于javascript - 一个构造函数的属性是否可以被另一个构造函数继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6815999/

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