gpt4 book ai didi

javascript - 在 Object.defineProperty 中调用父级实现

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

我使用 javascript 原型(prototype)继承,其中 A“继承”B。B 使用 defineProperty 为属性 prop 定义 setter。在 A 中我想重写此行为:

Function.prototype.inherits = function (parent) 
{
this.prototype = Object.create(parent.prototype);
this.prototype.constructor = parent;
};

// --------------------------------------------
var B = function()
{
this.myProp = 0;
};

Object.defineProperty( B.prototype
, 'prop'
, {
set: function(val)
{
this.myProp = val;
}
});
// --------------------------------------------
var A = function(){};
A.inherits(B);

Object.defineProperty( A.prototype
, 'prop'
, {
set: function(val)
{
// Do some custom code...

// call base implementation
B.prototype.prop = val; // Does not work!
}
});

// --------------------------------------------
var myObj = new A();
myObj.prop = 10;

以这种方式调用基本实现是行不通的,因为 this 指针将是错误的。我需要调用类似 B.prototype.prop.set.call(this, val); 的内容来修复它,但这不起作用。

如果有任何想法,我们将不胜感激!

编辑:根据需要,我添加了更多代码。

最佳答案

我相信你可以使用:

Object.getOwnPropertyDescriptor(B.prototype, 'prop').set.call(this, val);

http://jsbin.com/topaqe/1/edit

关于javascript - 在 Object.defineProperty 中调用父级实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28504487/

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