Javascript如何从;“超级级”;至“a”;儿童班;
我很清楚javascript不是一种基于类的语言 下面是我们在JavaScript中进行继承的一个例子:Javascript如何从;“超级级”;至“a”;儿童班;,javascript,oop,object,inheritance,constructor,Javascript,Oop,Object,Inheritance,Constructor,我很清楚javascript不是一种基于类的语言 下面是我们在JavaScript中进行继承的一个例子: 职能人员(姓名、年龄){ this.name=名称; 这个。年龄=年龄; } Person.prototype.introductself=函数(){ log(“我的名字是“+this.name+”,我是“+this.age”); } 职能员工(姓名、年龄、员工ID){ 人称(此、姓名、年龄); this.employeeID=employeeID; } Employee.prototyp
职能人员(姓名、年龄){
this.name=名称;
这个。年龄=年龄;
}
Person.prototype.introductself=函数(){
log(“我的名字是“+this.name+”,我是“+this.age”);
}
职能员工(姓名、年龄、员工ID){
人称(此、姓名、年龄);
this.employeeID=employeeID;
}
Employee.prototype=Object.create(Person.prototype);
Employee.prototype.sayEmployeeID=函数(){
console.log('我的员工ID是:'+这个.employeeID);
}
var joe=新员工('joe',22,42);
joe.introductself()//返回:我叫joe,今年22岁
joe.sayEmployeeID()//返回:我的员工ID是:42
我知道它正在调用Person
函数,而this
是Employee
您是否也了解“员工中的上下文”是什么?它是new
操作符在运行构造函数的主体(new Employee
中的Employee
)之前创建的新实例,即结果对象。有关详细信息,请参阅
现在还不清楚这些属性是如何到达结果对象的。“引擎盖下”到底发生了什么
属性由指定创建:
this.name = name;
this.age = age;
…
this.employeeID = employeeID;
同样,
此
引用生成的对象。在前两种情况下,因为显式地用于Person
,在后一种情况下,因为new
用于Emloyee
,在对象的方法中,此
上下文属于对象的上下文。对于Person
,它是一个instanceof函数
,它将此
上下文绑定到全局上下文(客户端JavaScript中的窗口
)。new
实例创建一个new
(独立于它的原型继承之外)对象,并且此
上下文绑定到它<如果未指定返回值,则代码>新建实例也会返回此。这也应该解释为什么EventListener中的This
上下文附加到它所属的对象。。。元素
为了菊花链你的实例方法,通常的做法是
返回这个代码>在它们内部 我建议投入大量时间研究JavaScript闭包@Kris,这与闭包无关,它只是javascript的本质,它在“动态”这个
指针上运行,让那些不理解它的人发疯。这就是为什么可以在javascript中“借用”函数,常见的流行模式是Array.prototype.slice.call(nodeList)
在添加数组之前,将节点列表
转换为数组。从
这是因为当新的
员工
实例被称为人
被称为宽度时,这个
绑定到员工
的实例@PHPglue,我知道它发生的原因,但不清楚这些属性是如何添加到实例中的。如果要将代码复制并粘贴到JS控制台中,只需运行Person.call(此'window',1)
将不会导致name
或age
属性添加到窗口中。只有在构造函数的上下文中调用时,结果对象才具有另一个构造函数/objectIt的属性<代码>人员呼叫(此“窗口”,1);console.log(名称)代码>您将获得窗口
这个
是在这样的全局上下文中。