创建对象
对象
封装了属性和方法,对象是无序列表面向对象 OOP
【创建对象】Object Oriented Programming
基本概念
一个对象用数据值来描述它的状态;对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
特性
- 对象唯一性 : 对象都有自身唯一标识
- 抽象性 : 具有一致的数据结构(属性)和行为(操作)的对象抽象
- 继承性 : 子类自动共享父类的数据结构和方法机制
- 多态性 : 相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果
- 封装 : 只能通过对象来访问方法
要素 - 抽象 : 强调实体的本质、内在的属性
- 封装性 : 保证软件部件具有优良的模块性
- 共享性 : 面向对象技术在不同级别上促进了共享
var obj = new Object();
obj.name = 'zs'
obj.age = 12
obj.test = function () {
console.log(this.name + '参加考试');
}
2. 字面量
var obj = {
name: 'zs',
age: 12
test : function () {
console.log(this.name + '参加考试');
}
}
3. 工厂函数
function createPerson(name,age) {
var obj = new Object();
obj.name = name;
obj.age = age;
obj.test = function () {
console.log(this.name + '参加考试');
}
return obj;
}
var p1 = new createPerson('xiaomi',12);
没有解决对象识别问题(即怎样知道一个对象的类型)
4. 构造函数
- 静态成员 -- 直接给构造函数添加的成员
- 静态成员不能使用对象的方式来调用
- 静态成员使用构造函数来调用
// 函数中的this就是创建出来的对象
function CreatePerson(name,age) {
this.name = name;
this.age = age;
this.showName = function () {
console.log(this.name + '参加考试');
}
}
var p1 = new CreatePerson('小米',14);
p1.showName()// 缺点 : 每个方法都要在每个实例上重新创建一遍
// 将函数提到构造函数之外,但构造函数只是封装了少量属性,方法都在构造函数之外,降低了构造函数的 **封装性**
function CreatePerson(name, age) {
this.name = name;
this.age = age;
this.showName = showName;
}
function showName() {
console.log(this.name + '参加考试');
}
var p1 = new CreatePerson('小米', 14);
p1.showName()
5. 原型
- 每个函数都有一个prototype 属性,这个属性是一个指针,它本身也是一个对象,指向的这个构造函数
- prototype的constructor属性指向构造函数
- constructor作用记录了创建该对象的构造函数 记录了创建该对象的构造函数
function Person(name,age) {
Person.prototype.name = name;
Person.prototype.age = age;
Person.prototype.sayHi = function(){
console.log('大家好,我是'+ this.name);
}
}
var p1 = new Person('zs',17);
p1.sayHi()
6. 混合模式
- 构造函数 : 用于定义实例属性
- 原型 : 用于定义方法和共享的属性
function Person(name,age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHi = function(){
console.log('大家好,我是'+ this.name);
}
var p1 = new Person('zs',17);
p1.sayHi()
推荐阅读
- django-前后端交互
- 数组常用方法一
- IDEA|IDEA 创建工程
- jQuery插件
- iOS面试题--基础
- 口红选得好,对象不愁找......
- java静态代理模式
- Python-类和对象
- 创建缔造完美教室,让每一间教室都闪闪发光
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查