gpt4 book ai didi

带有 protected 变量的javascript继承

转载 作者:行者123 更新时间:2023-11-30 09:01:15 24 4
gpt4 key购买 nike

在 javascript 中是否有可能有一个变量不能在类的函数之外访问,但可以被继承它的类访问?即:

class1 has protected var x = 4;

class2 inherits class1;

class2.prototype.getVar = function(){return /* parent, uber, super, whatever */ this.x;};

var cl2 = new class2();

console.log(cl2.x) // undefined
console.log(cl2.getVar()) // 4

最佳答案

没有。原型(prototype)继承仅限于对象的属性。

构造函数中的变量仅可用于该变量范围内的其他代码。

你可能想出类似...

function cls1() {
var a = 'foo';
this.some_func = function() {
alert(a);
};
}

function cls2() {
cls1.apply(this, arguments);
var cls1_func = this.some_func;

var b = 'bar'

this.some_func = function() {
cls1_func.apply(this, arguments);
alert(b);
};
}

var x = new cls2;

x.some_func(); // alert "foo" alert "bar"

或者让它更具体到你的伪代码...

function class1() {
var x = 4;
this.getVar = function() {
return x;
};
}

function class2() {

class1.apply(this, arguments);

var cls1_get_var = this.getVar;

this.getVar = function() {
return cls1_get_var.apply(this, arguments);
};
}

class2.prototype = Object.create( class1.prototype );

var cl2 = new class2;

console.log(cl2.x) // undefined
console.log(cl2.getVar()) // 4

关于带有 protected 变量的javascript继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9138657/

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