Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将参数传递给Javascript子类_Javascript_Inheritance_Prototype_Subclass - Fatal编程技术网

将参数传递给Javascript子类

将参数传递给Javascript子类,javascript,inheritance,prototype,subclass,Javascript,Inheritance,Prototype,Subclass,我要解决的问题是将参数传递给对象子类的构造函数 这段代码——函数不带参数——有效。它包括两个场景,一个创建MyClass实例,另一个创建MySubClass实例: <input type="button" value="Scenario 1" onclick="Scenario1()" /> <input type="button" value="Scenario 2" onclick="Scenario2()" /> function MyClass() {

我要解决的问题是将参数传递给对象子类的构造函数

这段代码——函数不带参数——有效。它包括两个场景,一个创建MyClass实例,另一个创建MySubClass实例:

<input type="button" value="Scenario 1" onclick="Scenario1()" />
<input type="button" value="Scenario 2" onclick="Scenario2()" />


function MyClass() {
    this.value = "test";
}
MyClass.prototype.function = function(){
    alert(this.value);
}


function MySubClass() {
}
MySubClass.prototype = new MyClass();

function Scenario1() {
    var myClass = new MyClass();
    myClass.function();
}
function Scenario2() {
    var mySubClass = new MySubClass();
    mySubClass.function();
}
场景1按预期显示“场景1”。在场景2中,永远不会设置“value”成员。显然,从我的语法来看,情况就是这样


是否有一种语法可以实现我所追求的?请注意,任何解决方案的约束条件都是“函数”必须添加到MyClass原型中,而不是被定义为内部函数(例如this.function=function())

这是实现继承的方式。向原型链上传递值的方法是调用父构造函数并传播参数

函数父级(x){
这个.x=x;
}
Parent.prototype.showX=函数(){
console.log(this.x);
}
函数子(x){
调用(this,x);//调用父构造函数
}
Child.prototype=Object.create(Parent.prototype);

new Child('example').showX()
太棒了,谢谢,这很管用,甚至有语法意义!你考虑过使用ES6类语法吗?没有。我已经使用类似的语法几十年了,喜欢这个原型的东西作为一种改变。
class
syntax仍然有原型的东西,它只是在语法上防止了继承错误…
function MyClass(val) {
    this.value = val;
}
MyClass.prototype.function = function(){
    alert(this.value);
}


function MySubClass(val) {
}
MySubClass.prototype = new MyClass();

function Scenario1() {
    var myClass = new MyClass("scenario 1");
    myClass.function();
}
function Scenario2() {
    var mySubClass = new MySubClass("scenario 2");
    mySubClass.function();
}