转载: http://www.cnblogs.com/silence516/articles/1509456.html
JS- 封装、继承、多态
Javascript是一门解释型的语言,是基于对象的,并不是真正的面向对象的语言,对变量类型的应用也是宽松的,其实它同样可以模拟面向对象的功能:
var newfun1 = new myfun1();
newfun1.public1(); //这是私有属性
alert(newfun1.publicvar);//这是实例属性
alert(newfun1.private1); // undefined newfun1.privateMethod(); //运行错误
function myfun2(){
}
myfun2.staticvar = "这是静态属性";
myfun2.staticmethod = function(){
alert(myfun2.staticvar);
}
var newfun2 = new myfun2();
//newfun2.staticmethod();//运行错误;
alert(newfun2.staticvar);//undefined
//静态私有成员
var myfun3 = (function(){
function privateProperty(){
}
privateProperty.staticvar = "这是静态私有成员";
privateProperty.staticmethod = function(){
alert(privateProperty.staticvar);
}
privateProperty.staticmethod();
return privateProperty
})();
//静态类
var funcount = 0;
var myfun4 = new function(){
funcount++;
this.printCount = function(){
alert(funcount);
}
}
myfun4.printCount(); //输出1;
myfun4.printCount(); //输出1;
myfun4.prototype.amethod = function(){
alert("原型对象");
}//运行错误
var newfun4 = new myfun4();
newfun4.amethod();
//运行错误,说明myfun3创建并实例化之后就不能再为它添加方法,属性
new myfun3.constructor().printCount();//如果你确实想实例化,这样也可以.
//原型继承
var myfun5 = function(){
}
myfun5.prototype.myfun5_extend = function(){
alert("这是原型继承的");
}
var myfun5_sub = function(){
}
myfun5_sub.prototype = new myfun5();
var newfun5 = new myfun5_sub();
newfun5.myfun5_extend(); //这是原型继承的
//调用继承
var myfun6 = function(){
this.method_p = function(){
alert("这是调用继承的");
}
}
var myfun6_sub = function(){
myfun6.call(this);
}
var newfun6 = new myfun6_sub();
newfun6.method_p();//这是调用继承的
//覆盖
var myfun7 = function(){
this.method = function(){
alert("这是父对象方法");
}
}
var myfun7_sub = function(){
this.method = function(){
alert("这是子对象方法");
}
}
myfun7_sub.prototype = new myfun7();
var newfun7 = new myfun7_sub();
newfun7.method(); //这是子对象方法,父对象方法被覆盖了.
//多态
function myfun8(a, b){
var a = a;
var b = b;
if (typeof a == "number" && typeof b == "number") {
alert(a * b);
} else if (typeof a == "string" && typeof b == "string") {
alert(a + b);
} else {
alert("输入错啦");
}
}
myfun8(3, 4); // 输出12;
myfun8("hi,", "你好");//输出hi,你好;
myfun8("hi", 5);//输入错啦.
分享到:
相关推荐
OOP 的主要特征包括封装、继承和多态。 1. **封装**:封装是将数据和操作数据的方法捆绑在一起,隐藏对象的属性和实现细节,仅对外提供公共访问方式。这样可以减少外部环境对对象的影响和破坏,提高代码的安全性和...
javascript中如何实现封装,继承和多态
javascript中如何实现封装,继承和多态,并有详细,我天天在传谢谢
这个名为“前端模块化脚手架”的工具,旨在为前端开发者提供一个类似于Java语言的封装、继承和多态特性的开发环境。通过这样的框架,开发者可以在JavaScript中模拟出面向对象编程的特性,使前端开发更加规范和高效。...
最后,通过在线HTML/CSS/JavaScript代码运行工具,可以进一步测试代码的运行结果,验证封装、继承和多态是否按预期工作。如果遇到任何问题,可以参考《javascript面向对象入门教程》、《JavaScript错误与调试技巧...
在JavaScript中,面向对象编程(OOP)的三大特性为封装、继承和多态。以下是对这些特性的详细介绍,以及在JavaScript中如何实现和原理的探讨。 封装是面向对象编程的基石之一。它通过类(class)的概念将数据(属性...
Java 面向对象编程之封装、继承、多态 本文将对 Java 面向对象编程的三大特性:封装、继承、多态进行详细的解释和分析。 一、封装 封装是面向对象编程的基本特性之一,指的是将数据和操作数据的方法封装在一起,...
我们都知道,面向对象的三大特征——封装、继承、多态。 封装无非就是属性和方法的私有化,所以我们JS中提供了私有属性和私有方法。 而JS中并没有多态,因此我们说JS是一门基于对象的语言,而非面向对象的语言。 ...
JavaScript的OOP机制主要涉及封装、继承和多态。以下是对这些概念的详细解释: **封装**: 封装是将数据和操作数据的方法捆绑在一起的过程,以保护数据不被外部直接访问。在JavaScript中,我们通常使用构造函数来...
我们还知道,面向对象编程有三个重要的概念 - 封装、继承和多态。 但是在JavaScript的世界中,所有的这一切特性似乎都不存在。 因为JavaScript本身不是面向对象的语言,而是基于对象的语言。
根据给定文件的信息,我们可以提炼出关于面向对象编程在Java、Python和JavaScript三种语言中的关键知识点,主要包括面向对象的基本概念、各个语言中的封装、继承、多态以及抽象类和接口等概念的应用。下面是对这些...
JavaScript中的原型(Prototype...这些HTML文件可能详细解释了JavaScript的原型、封装性、多态、继承和私有属性等概念,通过阅读和学习这些文件,开发者可以深入理解JavaScript的面向对象编程特性,并提升其编程能力。
"js-shell-0.2" 可能是为了解决这个问题,通过提供一种壳(Shell)来封装JavaScript,增强其代码组织能力,使开发者能够享受到类似Java的编译检查和类型安全。 JavaScript Shell可能包含了以下功能: 1. 类和对象...
JavaScript是一种基于原型的面向对象语言,它支持封装、继承和多态这三种面向对象的基本特征。下面我们将分别探讨这三个概念,结合实例来深入理解它们在JavaScript中的应用。 **封装(Encapsulation)** 封装是...
通过学习和运用这些经典的JavaScript封装技术,开发者不仅能提升代码质量,还能跟上技术发展趋势,确保项目在未来的可扩展性和兼容性。同时,理解并熟练掌握封装原则,也是成为一名优秀JavaScript开发者的重要一步。
JavaScript 面向对象编程 JavaScript 面向对象编程是指使用 JavaScript 语言来实现面向对象编程的...通过使用类和对象,我们可以模拟现实世界中的对象,并使用继承、多态和封装等概念来实现更好的代码重用和可维护性。
面向对象编程在JS中也占据重要地位,包括类、构造函数、原型链、继承、封装和多态。ES6引入的class语法糖使得JS的面向对象编程更加直观。 异步编程是JS的一大特色,事件循环和回调函数是基础,Promise用于解决回调...
面向对象编程主要基于四个核心概念:封装、继承、多态和抽象。 - **封装**:将数据和与数据相关的操作封装在一个独立的对象内部,从而隐藏对象的内部状态和实现细节。 - **继承**:允许一个对象继承另一个对象的属性...