一、定义类:使用的是funciton,因为在js中没有定义类的class语句,只有function.

■ 举例:

//定义一个Person类(通过类的无参构造函数定义类)
function Person(){}
var p = new Person();
p.name = '小明';
p.age = 12;

二、类的种类(系统类、自定义类)

(1)常见的系统类 String、Date、Math

1)String 类,字面量 '' 举例: var str = 'abc';

✿ 补充:
'' 字符串
[] 数组
{} 对象
// 正则表达式

① length

indexOf(string) 取得参数在字符串中出现的位置

substr(num1, num2) 截取字符串

④ toLowerCase()

⑤ toUpperCase()

replace(str1, str2) 字符串替换

2)Date 日期类

① getYear() getFullYear() getMonth() getDay()

② getDate()

③ getHours() getMinutes() getSeconds() getMilliseconds()

3) Math 数学类

① ceil(数值) floor(数值)

② min(数值1, 数值2) max(数值1, 数值2)

③ pow(数值1, 数值2)

④ random() 随机数

⑤ round(数值) 四舍五入

⑥ sqrt(数值) 开平方根

❀(2)自定义类【在js中没有定义类的语句class,是通过类的构造函数定义类的】:

❀ 1)语法:

function 类名() { //在js中没有定义类的语句class,是通过类的无参构造函数定义类

}

var 对象变量 = new 类名();

❀ 2)关于对象属性的使用:

对象.属性
对象['属性']

❀ 3)对象的属性是动态添加的,对象属性可以使用 . 或者 [''] 形式表示出来(对象的属性可以是任意数据类型)

//定义一个Person类(Person类的无参构造函数)
function Person(){}
var p = new Person();
p.name = '小明';
p['age'] = 12;

❀ 4)定义类通过类的有参构造函数:

■ 举例:

//定义一个Person类(Person类的有参构造函数)
function Person(name, age, hobby){
this.name = name;
this.age = age;
this.hobby = hobby;
} var p = new Person('小明', 12, '游戏');

5)for…in 遍历对象的属性:

■ 举例:

//定义一个Person类(Person类的有参构造函数)
function Person(name, age, hobby){
this.name = name;
this.age = age;
this.hobby = hobby;
} var p = new Person('小明', 12, '游戏');
for(var i in p){
document.write(i + ':' + p[i] + '<br/>');
}

6)关键字 constructor、typeof、instanceof、delete

  • constructor: 对象.constructor 返回对象的构造器
  • typeof: typeof 对象 返回对象的数据类型
  • instanceof: 对象 instanceof 类 判断对象是否是某个类的实例
  • delete: delete 对象.属性 删除对象的属性

三、prototype 原型(返回对象类型(类)原型的引用)

1、格式:class.prototype //获取类原型的引用

■ 举例:

//定义一个Person类
function Person(name, age) {
this.name = name;
this.age = age;
}
//获取类的原型Person.prototype, 并且给类添加属性nationlity
Person.prototype.nationality = "English";
//获取类的原型Person.prototype, 并且给类添加方法属性say
Person.prototype.say = function () {
console.log('say hello');
};
//创建Person类的实例
var p = new Person("John", 50);
console.log(p.nationality);
p.say();

✿ 2、区分实例属性和静态属性:

**例如:定义了一个Person类,区分Person.prototype. nationality 和 Person. nationality **:

■ Person.prototype. nationality: 是指为Person类下的实例添加属性nationality

■ Person. nationality:是指为Person类添加静态属性nationality

3、prototype 原理:

□ js在加载每个构造器时,会创建对应的原型对象

□ 在构造器对象内部有一个prototype属性用来指向原型对象;

□ 在原型对象内部是有一个constructor属性用来指向构造器;

□ 一般实例化对象后,对象的属性是先在构造器中查找,找不到就到原型对象中找

4、为什么说Object是所有类的父类:

当系统为某个类构造器创建原型对象时,类名.prototype = new Object()

//即类的原型是Object的一个实例,原型对象拥有Object的所有属性,

所以说Object是所有类的父类

四、原型链

五、json 对象

1、语法:{属性名:属性值,属性名:属性值,属性名:属性值……}

✿ 键值对的集合,即json对象

2、定义对象的属性语法:

//定义一个json对象
var p1 = {name:'小明', age:12, sex:'女'}; //对象的属性可以不加单引号,不叫双引号
var p2 = {'name':'小明', 'age':12, 'sex':'女'};//对象的属性可以加单引号
var p3 = {"name":'小明', "age":12, "sex":'女'};//对象的属性可以加双引号

□ json对象是Object类下的一个对象

3、创建对象有两种方式(使用构造器的方式和使用json { } 的方式),有什么区别?

■ json 创建对象省略了构造器的定义(程序只需要定义一个对象时)

■ 构造器可以简化属性的定义(程序需要定义多个相同的属性或方法的对象)

学习javaScript必知必会(6)~类、类的定义、prototype 原型、json对象的更多相关文章

  1. [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)

    http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...

  2. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  3. mysql学习--mysql必知必会1

     例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式 ...

  4. 【EatBook】-NO.1.EatBook.1.JavaData.1.001-《JSON 必知必会-Introduction to JavaScript Object Notation》-

    1.0.0 Summary Tittle:[EatBook]-NO.1.EatBook.1.JavaData.1.001-<JSON 必知必会-Introduction to JavaScrip ...

  5. 学习《SQL必知必会(第4版)》中文PDF+英文PDF+代码++福达BenForta(作者)

    不管是数据分析还是Web程序开发,都会接触到数据库,SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能. 推荐学习<SQL必知必会(第4版)>,内容丰富,文字简洁明快 ...

  6. 《MySQL必知必会》学习笔记——前言

    前言 MySQL已经成为世界上最受欢迎的数据库管理系统之一.无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定.可靠.快速.可信的系统,足以胜任任何数据存储业务的 ...

  7. 《SQL必知必会》学习笔记整理

    简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...

  8. 《SQL必知必会》学习笔记(一)

    这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...

  9. mysql学习--mysql必知必会

      上图为数据库操作分类:     下面的操作參考(mysql必知必会) 创建数据库 运行脚本建表: mysql> create database mytest; Query OK, 1 row ...

  10. 数据库学习之中的一个: 在 Oracle sql developer上执行SQL必知必会脚本

    1 首先在開始菜单中打开sql developer: 2. 创建数据库连接 点击左上角的加号 在弹出的对话框中填写username和password 測试假设成功则点击连接,记得角色要写SYSDBA ...

随机推荐

  1. LuoguB2105 矩阵乘法 题解

    Content 给定一个 \(n\times m\) 的矩阵 \(A\) 和一个 \(m\times k\) 的矩阵 \(B\),求两个矩阵相乘得到的矩阵. \(n\times m\) 的矩阵 \(A ...

  2. CF535A Tavas and Nafas 题解

    Content 请输出整数 \(s\) 的英文写法. 数据范围:\(0\leqslant s\leqslant 99\). Solution 直接对应打表即可. 当 \(0\leqslant s\le ...

  3. java 数据类型:集合接口Collection之常用ArrayList;lambda表达式遍历;iterator遍历;forEachRemaining遍历;增强for遍历;removeIf批量操作集合元素(Predicate);

    java.util.Collection接口 Java的集合主要由两个接口派生出来,一个是Collection一个是Map,本章只记录Collection常用集合 集合只能存储引用类型数据,不能存储基 ...

  4. react 结合antd 实现分页效果

    import React, { useState, useEffect } from "react"; // antd import { Pagination } from &qu ...

  5. 交通运输类文档下载——JT/T 808-2019、JT/T 809-2019文档分享

    JT/T 808-2019.JT/T 809-2019文档分享 网盘:https://pan.baidu.com/s/1vfgenani8WR3in2lua3qWQ提取码:fktd 官网下载808协议 ...

  6. JS根据日期获取判断星期几

    /** * 根据日期字符串获取星期几 * @param dateString 日期字符串(如:2020-05-02) * @returns {String} */ function getWeek(d ...

  7. 【LeetCode】799. Champagne Tower 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 参考资料 日期 题目地址:https:// ...

  8. 第五十个知识点:什么是BLS基于对的签名方案?

    第五十个知识点:什么是BLS基于对的签名方案? BLS签名方案使用了椭圆曲线上了Weil对,本质上是一个在曲线上除n划分的双线性形式,使用 \(n^{th}\) 个单位根. 假设我们有一个椭圆曲线\( ...

  9. 第二十四个知识点:描述一个二进制m组的滑动窗口指数算法

    第二十四个知识点:描述一个二进制m组的滑动窗口指数算法 简单回顾一下我们知道的. 大量的密码学算法的大数是基于指数问题的安全性,例如RSA或者DH算法.因此,现代密码学需要大指数模幂算法的有效实现.我 ...

  10. Unsupervised Feature Learning via Non-Parametric Instance Discrimination

    目录 概 主要内容 Wu Z., Xiong Y., Yu S. & Lin D. Unsupervised Feature Learning via Non-Parametric Insta ...