每一周的学习报告 第一周 数组和面向对象编程

C语言与程序设计(大学课程)

本周学习了数组
数组是由相同类型组合成的集合
数据类型可以是三种基本类型
int ,char double
也可以是自定义类型

数组的创建

int arr[8]={0,1,2,3,4,5,6,7};

创建数组时,数组的个数为常量
理论上可以写动态数组,但我不会,先挖个坑

数组的使用

数组的使用是从0开始的
arr[0]=0
数组的使用不能超出范围
arr[8]=9
在部分编译器中可运行但有可能会出现不可预知的错误

JavaScript 算法和数据结构

面向对象编程

JavaScript 对象

对象是一个包含相关数据和方法的集合
下面是一个标准的对象

let duck = {
  name: "Aflac",
  numLegs: 2,
  sayName: function() {return "The name of this duck is " + duck.name + ".";}
};
duck.sayName();

name为键key
在后面的"Aflac"为值value
访问方法:
括号表示法,点表示法


关键词 this
关键字"this"指向了当前代码运行时的对象
可将上面代码的duck.name改写

  name: "Aflac",
  numLegs: 2,
  sayName: function() {return "The name of this duck is " + this.name + ".";}
};

构造函数

构造函数是为了我们更方便的创建对象

创建构造函数

function Bird() {
  this.name = "Albert";
  this.color = "blue";
  this.numLegs = 2;
}

利用构造函数创建新实例

let sparrow=new Bird;

这样就创建了以Bird为原型的
构造函数可以接收参数

function Bird(name, color) {
  this.name = name;
  this.color = color;
  this.numLegs = 2;
}

可用instanceof方法查询一个对象不是使用构造函数创建
新对象 instanceof 构造原型;
返回值为 布尔值

构造函数的属性
  1. 自有属性

上方的对象的 name 和 color 和 numLegs 被叫做自有属性,
因为它们是直接在实例对象上定义的。

通过hasOwnProperty()函数判断是否为自有属性

  1. 原型属性(prototype属性)

通过原型所定义的属性。用于共享属性和方法。从原型对象中继承来的属性,一旦原型对象中属性值改变,所有继承自该原型的对象属性均改变。

通过prototype 方法新增原型属性

Bird.prototype.numLegs = 2;

接下来所有使用构造函数Bird创建的对象 都会有numLegs属性
numLegs属性被称为原型属性


Bird 构造函数创建了一个 duck 对象
duck将继承Bird的原型属性
使用 isPrototypeOf 方法来验证对象与原型属性之间的关系

Bird.prototype.isPrototypeOf(duck);

  1. constructor 属性

利用构造函数创建的实例对象都有一个 constructor 属性

let duck = new Bird();
let beagle = new Dog();

console.log(duck.constructor === Bird); 
console.log(beagle.constructor === Dog);

duck的constructor 属性为Bird
beagle的constructor 属性为Dog


给构造函数添加多个prototype的方法

Bird.prototype = {
  numLegs: 2, 
  eat: function() {
    console.log("nom nom nom");
  },
  describe: function() {
    console.log("My name is " + this.name);
  }
};

但要注意的是在给函数原型添加prototype属性时,
会将对象的constructor 属性清除,变为Object

因此在添加prototype属性时要给原型对象中定义一个 constructor 属性

Bird.prototype = {
  constructor: Bird,
  numLegs: 2,
  eat: function() {
    console.log("nom nom nom");
  },
  describe: function() {
    console.log("My name is " + this.name); 
  }
};

原型链

JavaScript 中所有的对象(除了少数例外)都有自己的 prototype。 而且,对象的 prototype 本身也是一个对象。
prototype 的原型是Object.prototype

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值