复习函数

函数定义
function函数名(){

函数体

函数调用:

函数名()

*参数:形参和实参

*形参:函数定义的时候函数名字后面的小括号里的变量就是参数,是不需要写var
*实参:函数调用的时候小括号里传入的变量或者是值,都是丈参

*返回值:函数中如果有return,那么这个函数就有返回值
*如果函数中没有return,那么这个函数没有返回值

*如果函数中有return,但是后面什么内容都没有,这个函数没有明确返回值

*如果- 个函数没有明确的返回值,函数调用了,并且接收了,那么此时接收的结果undefined

*如果直接输出函数名字,那么是这个函数的代码
rguments 对象

  1. arguments 对象实际上是所在函数的一个内置类数组对象
  2. 每个函数都有一个arguments属性,表示函数的实参集合,这里的实参是重点,就是执行函数时实际传入的参数的集合。arguments不是数组而是一个对象,但它和数组很相似,所以通常称为类数组对象,以后看到类数组其实就表示arguments。arguments对象不能显式的创建,它只有在函数开始时才可用。
  3. arguments还有属性callee,length和迭代器Symbol。
  4. arguments同样具有length属性,arguments.length 为函数实参个数,可以用arguments[length]显示调用参数
  5. arguments对象可以检测参数个数,模拟函数重载

arguments是一个对象,是一个伪数组arguments. Length--->是实参的个数arguments[素引---->实参的值

作用域:变量的使用范围

全局作用域:全局变量在任何位置都可以使用的范围

*局部作用域:局部变量只能在某个地方使用---函数内

*作用域链:在一个函数中使用一个变量,先在该函数中搜索这个变量,找到了则使用找不到则继续向外面找这 个变量,找到则使用,一直找到全局作用域,找不到则是undefined*全局变量:只要是在函数外面声明的变量都可以看成或者是理解成是全局变量

*局部变量:在函数中定义的变量

*预解析:在执行代码之前做的事情

最上面米变量的声明和函数的声明被提前了,变量和函数的声明会提升到当前所在的作用域的*函数中的变量声明,会提升到该函数的作用城的最上面(里面

*如果有多对的script标签都有相同名字的函数,预解析的时候是分段的,互不影响

JavaScript 对象

在 JavaScript中,几乎所有的事物都是对象。

在 JavaScript 中,对象是非常重要的,当你理解了对象,就可以了解 JavaScript 。

你已经学习了 JavaScript 变量的赋值。

以下代码为变量 car 设置值为 "Fiat" :

var car = "Fiat";

对象也是一个变量,但对象可以包含多个值(多个变量),每个值以 name:value 对呈现。

var car = {name:"Fiat", model:500, color:"white"};

在以上实例中,3 个值 ("Fiat", 500, "white") 赋予变量 car。

JavaScript 对象是变量的容器。

对象定义

你可以使用字符来定义和创建 JavaScript 对象:

实例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

</head>

<body>

<p>创建 JavaScript 对象。</p>

<p id="demo"></p>

<script>

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

document.getElementById("demo").innerHTML =

person.firstName + " 现在 " + person.age + " 岁.";

</script>

</body>

</html>

创建 JavaScript 对象。

John 现在 50 岁.

定义 JavaScript 对象可以跨越多行,空格跟换行不是必须的:

实例

var person = {
    firstName:"John",
    lastName:"Doe",
    age:50,
    eyeColor:"blue"
};

对象属性

可以说 "JavaScript 对象是变量的容器"。

但是,我们通常认为 "JavaScript 对象是键值对的容器"。

键值对通常写法为 name : value (键与值以冒号分割)。

键值对在 JavaScript 对象通常称为 对象属性

JavaScript 对象是属性变量的容器。

对象键值对的写法类似于:

  • PHP 中的关联数组
  • Python 中的字典
  • C 语言中的哈希表
  • Java 中的哈希映射
  • Ruby 和 Perl 中的哈希表

访问对象属性

你可以通过两种方式访问对象属性:

实例 1

person.lastName;

实例 2

person["lastName"]

对象方法

对象的方法定义了一个函数,并作为对象的属性存储。

对象方法通过添加 () 调用 (作为一个函数)。

该实例访问了 person 对象的 fullName() 方法:

实例

name = person.fullName();

如果你要访问 person 对象的 fullName 属性,它将作为一个定义函数的字符串返回:

实例

name = person.fullName;

JavaScript 对象是属性和方法的容器。

在随后的教程中你将学习到更多关于函数,属性和方法的知识。

访问对象方法

你可以使用以下语法创建对象方法:

methodName : function() {

// 代码 }

你可以使用以下语法访问对象方法:

实例

objectName.methodName()

通常 fullName() 是作为 person 对象的一个方法, fullName 是作为一个属性。

如果使用 fullName 属性,不添加 (), 它会返回函数的定义:

实例

objectName.methodName

编程思想

*编程思想:把一些生活中做事的经验融入到程序中
*面向过程:凡事都要亲力亲为,每件事的具体过程都要知道,注重的是过程*面向对象:根据需求找对象,所有的事都用对象来做,注重的是结果
*面向对象特性:封装,继承,多态(抽象性)
* js不是面向对象的语言,但是可以模拟面向对象的思想js是一门基于对象的语言: I

创建对象三种方式:
* 1.调用系统的构造函数创建对象

* var变量名= new object(); objeqt是系统的构造函数

*2.自定义构造函数创建对象(结合第-一种和箭求通过工厂模式创建对象)

instance查函数类型
//自定义构造函数创建对象,我要自己定义一个构造函数,自定义构造函数,创建对象//函数和构造函数的区别:名字是不是大写(首字母是大写

自定义构造函数

function Person(name,age) {

this.name=name;

this.age=age;

this.sayHi-function() {

console.log("您好,我叫:"+this . name);};

//创建对象----实例化一个对象,并初始化

var per=new Person("小明",20) ;

}

}

对象构建内存图四件事:
       
/*

* 1.开辟空间,存储创建的新的对象

* 2.把this设置为当前的对象

3.设置对象的属性和方法的值

4.返回创建后新的对象
*3.字面量的方式创建对象

缺陷:一次性对象

1利用字面量创建对象

var obj = {};

var obj={

uname:‘张三丰’,

age:18,

sex:'男',

sayHi:function(){

console.log('hi');

}

}

1)里面的属性或者方法采取键值对的形式

2)多个属性或方法用逗号隔开

3)方法冒号后面跟的是一个匿名函数

2.使用对象

(1)对象名.属性名

console.log(obj.uname)

(2)调用属性还有一种方法:对象名['属性名']

(3)调用对象的方法:对象名.方法名

obj.sayHi();

不要忘记添加小括号

2.2利用new Object创建对象

var obj = new Object( );

obj.uname='张三丰';

obj.age=18;

obj.sex='男';

obj.sayHi=function(){

console.log('Hi');

}

(1)我们是利用等号 = 赋值的方法,添加对象的属性和方法

(2)每个属性和方法之间用分号结束

(3)console.log(obj.uname);

console.log(obj['sex']);

obj.sayHi();

2.3利用构造函数创建对象

原因:前面两种创建对象的方法一次只能创建一个对象

特点:封装的是对象,不是普通代码

构造函数:把我们的对象里面一些相同的属性和方法抽象出来封装到函数面

function 构造函数名 (){

this.属性=值;

this.方法=function(){}

}

new 构造函数名( );

function Star(uname,age,sex){

this.name=uname;

this.age=age;

this.sex=sex;

this.sing=function(sang){

console.log(sang);

}

}

var ldh = new Star('刘德华',18,'男');//调用函数返回的是一个对象

console.log(ldh.name);

console.log(ldh['sex']);

ldh.sing('冰雨');

var zxy = new Star('张学友',20,'男');

console.log(zxy.name);

console.log(zxy.age);

//构造函数的名字首字母要大写

//构造函数不需要return就能返回结果

//调用构造函数必须使用new

//只要new Star()调用函数就创建一个对象

//属性和方法前面必须添加this

访问对象的属性

属性是与对象相关的值。

访问对象属性的语法是:

objectName.propertyName

这个例子使用了 String 对象的 length 属性来获得字符串的长度:

var message="Hello World!";var x=message.length;

在以上代码执行后,x 的值将是:

12

访问对象的方法

方法是能够在对象上执行的动作。

您可以通过以下语法来调用方法:

objectName.methodName()

这个例子使用了 String 对象的 toUpperCase() 方法来将文本转换为大写:

var message="Hello world!";var x=message.toUpperCase();

在以上代码执行后,x 的值将是:

HELLO WORLD!

JavaScript 深入了解基本类型和引用类型的值

一个变量可以存放两种类型的值,基本类型的值(primitive values)和引用类型的值(reference values)。

ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)

//原始数据类型: number, string, boolean, undefined, null,object//基本类型(简单类型),值类型: number, string, boolean
//复杂类型(引用类型):object
//空类型: undefined, null
//值类型的值在哪块空间中存储? 栈中存储

//引用类型的值在哪块空间中存储?对象在堆上存储地址在栈上存储
流畅,字嘉

基本类型

JavaScript 中共有 6 种基本数据类型:Undefined、Null、Boolean、Number、String、Symbol (new in ES 6) !

约定:基本数据类型与原始数据类型等意。

基本数据类型的值是按值访问的。

基本类型的值是不可变的

var str = "123hello321";

str.toUpperCase();     // 123HELLO321

console.log(str);      // 123hello321

基本类型的比较是它们的值的比较

var a = 1;var b = true;

console.log(a == b);    // true

console.log(a === b);   // false

上面 a 和 b 的数据类型不同,但是也可以进行值的比较,这是因为在比较之前,自动进行了数据类型的 隐式转换。

== : 只进行值的比较

=== : 不仅进行值得比较,还要进行数据类型的比较

基本类型的变量是存放在栈内存(Stack)里的

var a,b;

a = "zyj";

b = a;

console.log(a);   // zyj

console.log(b);   // zyj

a = "呵呵";       // 改变 a 的值,并不影响 b 的值

console.log(a);   // 呵呵

console.log(b);   // zyj

引用类型

除过上面的 6 种基本数据类型外,剩下的就是引用类型了,统称为 Object 类型。细分的话,有:Object 类型、Array 类型、Date 类型、RegExp 类型、Function 类型 等。

引用类型的值是按引用访问的。

引用类型的值是可变的

var obj = {name:"zyj"};   // 创建一个对象

obj.name = "percy";       // 改变 name 属性的值

obj.age = 21;             // 添加 age 属性

obj.giveMeAll = function(){

return this.name + " : " + this.age;};                        // 添加 giveMeAll 方法

obj.giveMeAll();

引用类型的比较是引用的比较

var obj1 = {};    // 新建一个空对象 obj1var obj2 = {};    // 新建一个空对象 obj2

console.log(obj1 == obj2);    // false

console.log(obj1 === obj2);   // false

因为 obj1 和 obj2 分别引用的是存放在堆内存中的2个不同的对象,故变量 obj1 和 obj2 的值(引用地址)也是不一样的!

引用类型的值是保存在堆内存(Heap)中的对象(Object)
与其他编程语言不同,JavaScript 不能直接操作对象的内存空间(堆内存)。

var a = {name:"percy"};var b;

b = a;

a.name = "zyj";

console.log(b.name);    // zyj

b.age = 22;

console.log(a.age);     // 22var c = {

name: "zyj",

age: 22};

图解如下:

栈内存中保存了变量标识符和指向堆内存中该对象的指针

堆内存中保存了对象的内容

检测类型

typeof:经常用来检测一个变量是不是最基本的数据类型

var a;typeof a;    // undefined

a = null;typeof a;    // object

a = true;typeof a;    // boolean

a = 666;typeof a;    // number

a = "hello";typeof a;    // string

a = Symbol();typeof a;    // symbol

a = function(){}typeof a;    // function

a = [];typeof a;    // object

a = {};typeof a;    // object

a = /aaa/g;typeof a;    // object

instanceof:用来判断某个构造函数的 prototype 属性所指向的对象是否存在于另外一个要检测对象的原型链上

简单说就是判断一个引用类型的变量具体是不是某种类型的对象

({}) instanceof Object              // true([]) instanceof Array               // true(/aa/g) instanceof RegExp           // true(function(){}) instanceof Function  // true

JavaScript Math 对象

Math 对象

Math 对象用于执行数学任务。

Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math()。

语法

var x = Math.PI; // 返回PI
var y = Math.sqrt(16); // 返回16的平方根

Math 对象教程,请参照本站的JavaScript Math 对象教程。

Math 对象属性

属性

描述

E

返回算术常量 e,即自然对数的底数(约等于2.718)。

LN2

返回 2 的自然对数(约等于0.693)。

LN10

返回 10 的自然对数(约等于2.302)。

LOG2E

返回以 2 为底的 e 的对数(约等于 1.4426950408889634)。

LOG10E

返回以 10 为底的 e 的对数(约等于0.434)。

PI

返回圆周率(约等于3.14159)。

SQRT1_2

返回 2 的平方根的倒数(约等于 0.707)。

SQRT2

返回 2 的平方根(约等于 1.414)。

Math 对象方法

方法

描述

abs(x)

返回 x 的绝对值。

acos(x)

返回 x 的反余弦值。

asin(x)

返回 x 的反正弦值。

atan(x)

以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。

atan2(y,x)

返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。

ceil(x)

对数进行上舍入。

cos(x)

返回数的余弦。

exp(x)

返回 Ex 的指数。

floor(x)

对 x 进行下舍入。

log(x)

返回数的自然对数(底为e)。

max(x,y,z,...,n)

返回 x,y,z,...,n 中的最高值。

min(x,y,z,...,n)

返回 x,y,z,...,n中的最低值。

pow(x,y)

返回 x 的 y 次幂。

random()

返回 0 ~ 1 之间的随机数。

round(x)

四舍五入。

sin(x)

返回数的正弦。

sqrt(x)

返回数的平方根。

tan(x)

返回角的正切。

JavaScript 函数 ,对象相关推荐

  1. 深入探讨JavaScript函数对象

    人人生而平等,但有些人比其他人更加平等--奥威尔 函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解. javascript中的函数不同于其他的语言,它的每个函数都是 ...

  2. 爬虫不得不学之 JavaScript 函数对象篇

    今天好像是情人节?所以最适合面向对象,JavaScript 也有对象,我们也可以随时面向对象,方便得很,那怎样才有对象呢?下面告诉你! 1. 数组 数组,字面意思就是一堆数的组合,但是它是有顺序的,学 ...

  3. 通过 “函数对象”看javascript函数

    #前言 本文主要阐述一些JavaScript行为的深层原因.很多东西都是主观臆测结合编程经验推测出来的. 如有谬误请包涵,也可以联系作者(qq:504451056,email:504451056@qq ...

  4. JavaScript函数与Window对象

     JavaScript函数与Window对象 一.函数的使用 函数的含义:类似于Java中的方法,是完成特定任务的代码语句块   ◆常用系统函数: parseInt ("字符串") ...

  5. JavaScript类型·对象·函数

    ECMAScript是一种由Ecma国际通过ECMA-262标准化的脚本程序设计语言,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展. ECMASc ...

  6. 七、深入JavaScript函数,对象和作用域(三)

    @Author:Runsen @Date:2020/5/26 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...

  7. JavaScript(三)—— JavaScript 函数/JavaScript 作用域/JavaScript 预解析/JavaScript 对象

    本篇为 JavaScript 系列笔记第三篇,将陆续更新 JavaScript(一)-- 初识JavaScript/注释/输入输出语句/变量/数据类型 JavaScript(二)-- JavaScri ...

  8. JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法...

    函数的作用域:调用对象 JavaScript中函数的主体是在局部作用域中执行的,该作用域不同于全局作用域.这个新的作用域是通过将调用对象添加到作用域链的头部而创建的(没怎么理解这句话,有理解的亲可以留 ...

  9. 理解JavaScript函数(函数和对象的区别和联系)

    原文:http://harrison2010.javaeye.com/blog/173446 函数对象和其他内部对象的关系 除了函数对象,还有很多内部对象,比如:Object.Array.Date.R ...

最新文章

  1. linux gcc编译c文件头文件,使用GCC编译器编译C语言
  2. Android.mk中添加宏定义
  3. http缓存机制之304状态码
  4. Nginx的client_header_buffer_size和large_client_header_buffers学习
  5. linux下为php开启oci8扩展(ubuntu14亲测可用)
  6. fastjson和json-lib的区别
  7. 单片机shell命令_单片机裸机下写一个自己的shell调试器
  8. 浮动路由与VRRP的概念
  9. 强网杯2019线上赛-misc
  10. 稳压二极管的原理和伏安特性
  11. 模型评估(误差平方和(SSE The sum of squares due to error))
  12. html5小游戏猴子爬树源码,猴子爬树小班教案
  13. uefi如何安装linux系统教程,UEFI启动模式下安装Ubuntu教程
  14. ZigBee Dotdot
  15. 机器学习——特征工程——数据的标准化(Z-Score,Maxmin,MaxAbs,RobustScaler,Normalizer)
  16. 使用minikube快速部署k8s集群
  17. 君子不玩物丧志,亦常以借物调心,网站集成二次元网页小组件(widget)石蒜模拟器,聊以赏玩
  18. VUE中箭头函数可不兴用,尤其是箭头函数里头阿喂
  19. 如何扩大营销卖蜂蜜?
  20. 什么样的人适合读博士

热门文章

  1. 高考测试分数软件,高考分数查询软件
  2. LeetCode - 力扣
  3. 8个工程必备的JavaScript代码片段(建议添加到项目中)
  4. 安卓手机管理_安卓手机清理大师app下载-安卓手机清理大师下载v1.0.0安卓版
  5. 软考高项记忆小妙招—配置管理和变更管理
  6. (九)GD、L1和L2、MAP、MLE、Lasso
  7. 10款常见的Webshell检测工具
  8. java基于web的自行车租赁系统ssh
  9. 总结:java.lang包
  10. 【U8+】用友U8同一个账套使用了好多年,需要将以前年度进行分离、删除。