1. 面向对象概念
1) 什么是面向对象: oop 是一种编程的思想, 体现的是生活逻辑
2) 面向对象和面向过程:
面向过程:
1: 大量的全局变量
2: 命名冲突
3: 顺序执行 (一步一步一步........)
面向对象三大特性: 封装 继承 多态 (JS 没有多态的)
JS: 封装 \ 抽象 \ 继承 (借)
3) 写 JS 面向对象代码特点:
高内聚 (在一个功能模块里面所有的代码必须紧密相邻)
低耦合 (模块和模块之间尽量 少 关联)
2. 构造函数
构造函数 -> new 对象 (实例化对象) -> 存储数据.
注: 构造函数 (为了区分普通函数和构造函数 构造函数的首字母大写)
构造函数 -> 去实例化对象.
eg: 写一个对象去描述一个人
- var person = new Object();
- person.name = 'wangshuai';
- person.age = '20';
- person.show = function(){
- return '好帅'
- }
去描述 100 个人 (复制?????) 封装起来
- function person(name,age){
- var obj = new Object(); // 工厂
- obj.name = name; // 加工
- obj.age = age;
- obj.show = function(){
- return obj.name;
- }
- return obj; // 出厂
- }
- var person1 = person('wangshuai','20');
- var person2 = person('xiaom','10');
- var person3 = person('ee','30');
上述代码分析:
在创建每一个人的时候 (调用 person), 在函数内部每次都会 new 一个对象
在构造函数里面 实例化对象的时候. 自动 return 出一个 this 指向当前这个对象.
3: 普通函数 和构造函数的差别:
例:
- function person(){
- return this;
- }
- var p1 = new person(); // 实例化对象 person 构造函数.
- console.log(p1)
普通函数如果函数内部没有 return 的时候, 返回的是一个 undefined.
构造函数如果内部没有 return 的时候, 再实例化的对象的时候 (new 对象), 自动 return 出 this 指向当前构造出来的这个对象
4. prototype
原型对象:
记录了一个函数公共的属性和方法.
可以拓展属性和方法
节约内存提升性能
继承属性和方法
例: function Person(name,age){
- this.name = name;
- this.age = age;
- }
- Person.prototype.show = function(){
- this.name;
- }
- var p1 = new Person('ws',10);
- var p2 = new Person('dd',20);
- console.log(p1.show == p2.show)
来源: http://www.bubuko.com/infodetail-3059415.html