Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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 我可以在js中通过父对象创建对象吗_Javascript_Oop_Inheritance_Javascript Objects - Fatal编程技术网

Javascript 我可以在js中通过父对象创建对象吗

Javascript 我可以在js中通过父对象创建对象吗,javascript,oop,inheritance,javascript-objects,Javascript,Oop,Inheritance,Javascript Objects,我是OOJS新手,在试图理解继承时有点困惑,我创建了两个简单的类,person和student,它们继承自person,是否有一个通过在父构造函数中传递数据来创建student的选项?如果可能的话,怎么做?子级可以从父级获取所有属性和方法,还是仅从方法获取 **警报中的fname和lName未定义 function Person(fNme, lName) { this.fname = fNme; this.lName = lName;

我是OOJS新手,在试图理解继承时有点困惑,我创建了两个简单的类,person和student,它们继承自person,是否有一个通过在父构造函数中传递数据来创建student的选项?如果可能的话,怎么做?子级可以从父级获取所有属性和方法,还是仅从方法获取

**警报中的fname和lName未定义

function Person(fNme, lName) {
                this.fname = fNme;
               this.lName = lName;
               } 
               Object.prototype.go = function() {
                 alert("I am going now last time you see  "+ this.lName);

            }
            function Student() {
                this.study = function () {
                   alert("I am studing !");
                }
            }

            Student.prototype = new Person();
            var s1 = new Student("sam", "bubu");
            alert(s1.fname +"+"+ s1.lName)   

你可以使用构造函数

  function Student(fName,lName) {
      Person.call(this,fName,lName); 
                this.study = function () {
                   alert("I am studing !");
                }
            }

调用
Student
构造函数时,可以通过
call()
将参数传递给
Person()
,以初始化
Person

中的变量,这只需调用父构造函数即可

function Student(fName, lName, whateverelse) {

     Person.call( this, fName, lName ); // call base class constructor function

     this.study = function () {
        alert("I am studing !");
     }
}

因此,您想在
Student()
中调用
Person()
,并将其传递给正确的参数是的,就像在c#中一样,调用父级使用其构造函数,如果可能的话……好的,如果我想向Student添加另一个属性:将从Person中获取名称,并将平均值添加到Student构造函数中是否可能?。。。顺便问一下,为什么在声明继承之后,这是未定义的?Student.prototype=新人();var s1=新生(“sam”、“bubu”);要在
Person()
中使用的任何参数,只需在
Person.call()
中传递即可。以下是您的示例: