美文网首页
创建对象

创建对象

作者: IF_ni | 来源:发表于2019-01-14 11:24 被阅读0次

对象

封装了属性和方法,对象是无序列表

面向对象 OOP

Object Oriented Programming
基本概念
一个对象用数据值来描述它的状态;对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
特性

  • 对象唯一性 : 对象都有自身唯一标识
  • 抽象性 : 具有一致的数据结构(属性)和行为(操作)的对象抽象
  • 继承性 : 子类自动共享父类的数据结构和方法机制
  • 多态性 : 相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果
  • 封装 : 只能通过对象来访问方法
    要素
  • 抽象 : 强调实体的本质、内在的属性
  • 封装性 : 保证软件部件具有优良的模块性
  • 共享性 : 面向对象技术在不同级别上促进了共享

创建对象

1. 使用 new 关键字

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()

相关文章

  • javascript面向对象解析(一)

    创建对象的方式 json对象方式创建对象 Object方式 声明构造函数方式,创建对象 -- 这种创建对象的方式用...

  • JS对象

    JS 创建对象 批量创建对象

  • JavaScript基础—对象

    概论 对象基础 创建对象 利用字面量创建对象: 使用对象 利用new Object创建对象 使用对象方式与上面完全...

  • JS 创建对象的四种方式

    通过对象字面量来创建 通过 new Object() 创建对象 通过工厂函数来创建对象 通过构造函数来创建对象 工...

  • JS笔记-006-JS对象-数字-字符串-日期-数组-逻辑

    JS对象 创建 JavaScript 对象 通过 JavaScript,您能够定义并创建自己的对象。 创建新对象有...

  • 创建对象

    1. 原始方法 2. 工厂方法 3. 构造函数 4. 原型函数 5. 混合构造函数\原型函数 6. 动态原型方法

  • 创建对象

    工厂方式 缺点:1.无法确定对象的类型(因为都是Object)。2.创建的多个对象之间没有关联。3.这个对象的属性...

  • 创建对象

    在ES5中 我们想创建一个对象,人。 我们想克隆多个相似的人怎么办?需要一个函数(资源)创造一个 对象模版(对象制...

  • 创建对象

    工厂模式发明一种函数,用函数来封装以特定接口创建对象的细节。 构造函数模式 使用new操作符,会经历四个步骤 原型...

  • 创建对象

    第三部分 创建对象 为类分配相应的空间,默认值为0。 id 变量名 = [类名 alloc]; 类名 *变量名 =...

网友评论

      本文标题:创建对象

      本文链接:https://www.haomeiwen.com/subject/mijddqtx.html