今天上午我研究了一下构造函数与继承
在阮一峰老师的日志中这样子记载:构造函数是指 普通函数中包含this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。
//构造函数 2 function Egperson (name,age) { 3 this.name = name; 4 this.age = age; 5 this.sayName = function () { 6 alert(this.name); 7 } 8 } 9 var person = new Egperson('mike','18'); //this-->person 10 person.sayName(); //'mike'
//普通函数 14 function egPerson (name,age) { 15 this.name = name; 16 this.age = age; 17 this.sayName = function () { 18 alert(this.name); 19 } 20 } 21 egPerson('alice','23'); //this-->window 22 window.sayName(); //'alice'
我们可以看到的是普通函数中也包含this这个关键变量,所以有this变量的不一定是构造函数。
但是恰恰应该是更要符合后面两点生成一个新的实例,并且this变量指向新的实例,这两点我觉得更是应该符合构造函数特点。
二、关于继承
在Java中会有通过class实现子类继承父类的说法,但是在js中没有class类。
但是每一个构造函数都有一个prototype属性,而这一个属性使函数和函数之间可以共享一个属性。
function Cat(name,color){
this.name = name;
this.color = color;
}
Cat.prototype.type = "猫科动物";
Cat.prototype.eat = function(){alert("吃老鼠")};
部分转载自:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html
https://www.cnblogs.com/cindy79/p/7245566.html