标签:
一:什么是面向对象?
对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。 关于对象要从两方面理解:一方面指系统所要处理的现实世界中的对象;另一方面对象是计算机不直接处理的对象,而是处理相应的计算机表示,这种计算机表示也称为对象。
二:创建对象
对象的创建方式是用关键字 new 后面跟上实例化的类的名字:
var oObject = new Object();
var oStringObject = new String();
<---面向对象--->
例:
<script> function method(){ console.log("这是一个函数"); } method(); function Student(name,sex,age){ this.name = name; this.sex = sex; this.age = age; this.study = function(){ console.log("我的名字叫:"+this.name); } } var stu1 = new Student("张飞","男",20); stu1.study(); // stu1.phone = "12345"; var stu2 = new Student("小乔","女",21); stu2.study(); Student.prototype.phone = "88888"; console.log(stu1.name+"的电话:"+stu1.phone); console.log(stu2.name+"的电话:"+stu2.phone); </script>
三:面向对象编程方式
1.函数式编程
函数式编程是种编程典范,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算。λ演算的函数可以接受函数当做输入(参数)和输出(返回值)。
2. 对象式编程
面向对象编程是使用对象的编程范式——包含数据域、方法以及他们之间的交互——来设计应用和程序。编程技术包括数据抽象,封装,多态和继承。
四:面向对象组成部分
1. 特征/属性
2. 行为/方法
类
1. 具有相同特征(属性)和行为(方法)的对象集合
2. 类是对象的抽象
3. 对象式类的实例
原型
根据对象产生对象的实例
继承
代码可以重用,可以扩展
js继承
对象冒充法
面向对象语言需要向开发者提供二种基本能力:
1.封装:
Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。
那么,如果我们要把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做呢?
一、 生成对象的原始模式
假定我们把猫看成一个对象,它有"名字"和"颜色"两个属性。
var Cat = {
name : ‘‘,
color : ‘‘
}
现在,我们需要根据这个原型对象的规格(schema),生成两个实例对象。
var cat1 = {}; // 创建一个空对象
cat1.name = "水"; // 按照原型对象的属性赋值
cat1.color = "白色";
var cat2 = {};
cat2.name = "水";
cat2.color = "白色";
这就是最简单的封装了,把两个属性封装在一个对象里面。
2.多态:
基本概念:
1.多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态。
2.在使用多态是,会进行动态检测,以调用真实的对象方法。
3.多态在代码中的体现即父类指针指向子类对象。
4.好处:如果函数方法参数中使用的是父类类型,则可以传入父类和子类对象,而不用再去定义多个函数来和相应的类进行匹配了。
5.局限性:父类类型的变量不能直接调用子类特有的方法,如果必须要调用,则必须强制转换为子类特有的方法
3.继承:
语法层面上讲,继承就是派生类拥有父类的数据、方法,又添了点自己的东西,所谓子承父业。
<script>
function People(name,age){
this.name = name;
this.age = age;
this.show = function(){
console.log("我的名字叫:"+this.name+" 我的年龄为:"+this.age);
}
}
function Man(name,age){
//对象冒充法1
// this.inhert = People;
// this.inhert(name,age);
// delete this.inhert;
//对象冒充法2
// People.call(this,name,age);
//对象冒充法3
// People.apply(this,[name,age]);
this.name = name;
this.age = age;
}
Man.prototype = new People();
var man1 = new Man("张飞",20);
man1.show();
console.log(man1 instanceof People);
</script>
标签:
原文地址:http://www.cnblogs.com/JJFF/p/4658739.html