一、定义类:使用的是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. CF125A Measuring Lengths in Baden 题解

    Content 在 Baden,一英寸等于 \(3\) 厘米,一英尺等于 \(12\) 英寸. 现在有一个 \(n\) 厘米的物体,求在 Baden,它是几英尺又几英寸. 数据范围:\(1\leqsl ...

  2. 如何获得Spring容器里管理的Bean,。不论是Service层,还是实体Dao层

    如何获得Spring容器里管理的Bean,.不论是Service层,还是实体Dao层, 下面的这个必须配置,否则必出错,空指针 下面的这个是代码 而获得bean代码如下: serviceManager ...

  3. SpringBoot整合knife4j框架(可生成离线接口文档),并设置接口请求头token默认值

    功能和swagger类似 官网地址:https://doc.xiaominfo.com/knife4j/ 这个框架可以设置返回字段的描述 引入依赖 <dependency> <gro ...

  4. Xshell连接Ubuntu服务器连接不上 显示拒绝了密码

    确保下方两个都安装了 sudo apt-get install openssh-server sudo apt-get install ssh 修改 vim /etc/ssh/sshd_config ...

  5. Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)

    Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...

  6. nim_duilib(7)之TreeView

    introduction 更多控件用法,请参考 here 和 源码. 本文的代码基于这里 xml文件添加代码 基于上一篇, 继续向basic.xml中添加下面关于TreeView的代码. xml完整源 ...

  7. 【LeetCode】283. Move Zeroes 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:首尾指针 方法二:头部双指针+双循环 方法三 ...

  8. 【LeetCode】563. Binary Tree Tilt 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 Java解法 Python解法 日期 题目地址:ht ...

  9. Google Chrome调整控制台的位置

    众所周知,控制台是开发必备的工具,学会流畅的使用控制台会给我们的开发带来不一样的体验,但是控制台的位置有时却是困扰我们的一件事,控制台默认是在浏览器内,有时十分妨碍我们,那么有没有什么办法修改控制台的 ...

  10. Java高级大一结业认证考试试题 - 云南农业职业技术学院 - 互联网技术学院 - 美和易思校企合作专业

     第1题 .关于XML的文档结构描述错误的是 一个基本的XML文档通常由序言和文档元素两部分组成 XML文档中的序言可以包括XML声明.处理指令和注释 XML文档中的元素以树形结构排列 XML文档的声 ...