本文主要是介绍JavaScript实现类与继承的方法(全面整理) javascript 刘宁Leo 2月10日发布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
JavaScript定义类的4种方法
工厂方法
function creatPerson(name, age) {var obj = new Object();obj.name = name;obj.age = age;obj.sayName = function() {window.alert(this.name);};return obj;
}
构造函数方法
function Person(name, age) {this.name = name;this.age = age;this.sayName = function() {window.alert(this.name);};
}
原型方法
function Person() {}Person.prototype = {constructor : Person,name : "Ning",age : "23",sayName : function() {window.alert(this.name);}
};
大家可以看到这种方法有缺陷,类里属性的值都是在原型里给定的。
组合使用构造函数和原型方法(使用最广)
function Person(name, age) {this.name = name;this.age = age;
}Person.prototype = {constructor : Person, sayName : function() {window.alert(this.name);}
};
将构造函数方法和原型方法结合使用是目前最常用的定义类的方法。这种方法的好处是实现了属性定义和方法定义的分离。比如我可以创建两个对象person1
和person2
,它们分别传入各自的name
值和age
值,但sayName()
方法可以同时使用原型里定义的。
JavaScript实现继承的3种方法
借用构造函数法(又叫经典继承)
function SuperType(name) {this.name = name;this.sayName = function() {window.alert(this.name);};
}function SubType(name, age) {SuperType.call(this, name); //在这里借用了父类的构造函数this.age = age;
}
对象冒充
function SuperType(name) {this.name = name;this.sayName = function() {window.alert(this.name);};
}function SubType(name, age) {this.supertype = SuperType; //在这里使用了对象冒充this.supertype(name);this.age = age;
}
组合继承(最常用)
function SuperType(name) {this.name = name;}SuperType.prototype = {sayName : function() {window.alert(this.name);}
};function SubType(name, age) {SuperType.call(this, name); //在这里继承属性this.age = age;
}SubType.prototype = new SuperType(); //这里继承方法
组合继承的方法是对应着我们用‘组合使用构造函数和原型方法’定义父类的一种继承方法。同样的,我们的属性和方法是分开继承的。
总结
以上就是常见的JavaScript中面向对象编程的几种实现,欢迎大家补充与指正。
这篇关于JavaScript实现类与继承的方法(全面整理) javascript 刘宁Leo 2月10日发布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!