js中的对象、函数定义以及形参和实参
一、对象属性的两种写法
1、点语法
点语法的属性值不加双引号,运用时不能使用变量
2、中括号的写法
(1)中括号写法obj[“key”]=value;必须有双引号,原因是在key这种写法时,要求属性名必须是字符型或者symbol;
(2)当使用obj[变量],如果变量的值不是字符型,会隐式转换为字符型,并且将这个字符作为该对象的属性名
【注】任何对象强转为字符串后,就会变成"[object Object]"
二、对象的存储
1、栈的数据读取,写入速度快,但是存储的内容较少(字符型,数值型,布尔型,undefined存在栈中)。在栈中,一旦该变量不再使用时会被清理掉。
2、堆的数据读取,写入速度慢,但是存储的内容多(对象是存储在堆中)。
3、内存泄漏:对象的引用列表中变量并没有清除掉引用关系,因此就不会被垃圾回收车回收。
var obj={a:1};obj=3;//{a:1}的引用列表仍然是obj,但obj已经是新的值3了,于是没有任何方法再获取{a:1},这个对象也不会被垃圾回收车回收obj=null;//当我们不使用某个对象时,要给该对象删除引用,再重新给obj赋值.当内存占用达到一定的时候,就会有一个垃圾回收车将所有堆中没有引用关系的对象回收掉
三、函数
对于js来说,函数就是把任意一段代码放在一个“盒子”里面,想这段代码执行时,直接执行这个“盒子”里代码即可。
1、函数定义
(1)命名函数定义(声明式)
function abc(){console.log("a");}abc();//执行函数
- 函数也是对象。
上述代码若加上var fn=abc;fn();意为将函数abc()的函数名赋值给fn。即使不要abc();也能执行函数abc的内容 - javascript是解释性语言,代码会一边解释编译,一边执行,当执行到当前的script标签时,预先将当前script标签中所有的命名函数先存储在堆中,并且在栈中给它定义函数名引用该函数地址。
- 命名函数可以在函数定义之前或者之后执行
<body><script>abc();//不能执行函数abc</script><script>function abc(){console.log("a");}abc(); //在当前script中的函数一旦创建成功,后面的所有script标签都可以使用该函数</script><script>abc();//可以执行函数abc</script>
</body>
(2)匿名函数定义
- 匿名函数没有名字
- 可以设置给一个变量,或者设置给一个对象的属性
- 匿名函数只能在函数定义后执行
变量匿名函数
//当运行到这一行时,才将这个匿名函数赋值给变量fnvar fn=function(){}
对象方法定义匿名函数
var obj={fn:funciton(){}}
自执行匿名函数。
缺点:只能执行一次,无法再次调用(function(){})();
3、构造函数定义
var fn=new Function("参数1","参数1",……,"函数内容");
- 构造函数中,前面的内容就是这个创建函数的所有参数,最后一个内容就是这个函数执行语句块
- 要求所有内容都必须是字符串
- 缺点:构造函数创建函数缺点是运行速度慢,效率低,因为需要将所有的字符串转换为代码
四、函数的参数(重点)
参数分为两种 形参 和 实参
// 声明式
function fn(形参写在这里) {// 一段代码
}
fn(实参写在这里)// 赋值式函数
var fn = function(形参写在这里) {// 一段代码
}
fn(实参写在这里)
1、形参
- 就是在函数内部可以使用的变量,在函数外部不能使用
- 每写一个单词,就相当于在函数内部定义了一个可以使用的变量(遵循变量名的命名规则和命名规范)
- 多个单词之间以逗号分隔
function fun(num1, num2) {// 在函数内部就可以使用 num1 和 num2 这两个变量
}
- 如果只有形参的话,那么在函数内部使用的值个变量是没有值的,也就是 undefined
- 形参的值是在函数调用的时候由实参决定的
2、实参
- 在函数调用的时候给形参赋值的。即在调用的时候给一个实际的内容
function fn(num) {// 函数内部可以使用 num
}
// 这个函数的本次调用,书写的实参是 100 ,那么本次调用的时候函数内部的 num 就是 100
fn(100);
- 函数内部的形参的值,由函数调用的时候传递的实参决定
- 多个参数的时候,是按照顺序一一对应的
3、参数个数的关系
(1)形参比实参少
因为是按照顺序一一对应的,形参少就会拿不到实参给的值,所以在函数内部就没有办法用到这个值
function fn(num1, num2) {// 函数内部可以使用 num1 和 num2
}
// 本次调用的时候,传递了两个实参,100,200
// 100 对应了 num1,200 对应了 num2,300 没有对应的变量
// 所以在函数内部就没有办法依靠变量来使用 300 这个值
fn(100, 200, 300);
(2)形参比实参多
因为是按照顺序一一对应的,所以多出来的形参就是没有值的,就是 undefined
function fn(num1, num2, num3) {// 函数内部可以使用 num1 num2 和 num3
}
// 本次调用的时候,传递了两个实参,100 和 200
// 就分别对应了 num1 和 num2
// 而 num3 没有实参和其对应,那么 num3 的值就是 undefined
fn(100, 200)
js中的对象、函数定义以及形参和实参相关推荐
- html js 数组定义,js 中数组对象的定义赋值 以及方法
1.定义数组 var m=new Array(); var n=[]; 2.数组的赋值(两种) A. var m=new Array(2); 一个值表示数组length var m=new Array ...
- php new对象 调用函数,关于JS中new调用函数的原理介绍
这篇文章主要介绍了关于JS中new调用函数的原理介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 JavaScript 中经常使用构造函数创建对象(通过 new 操作符调用一个函数) ...
- Js中Reflect对象
Js中Reflect对象 Reflect是ES6起JavaScript内置的对象,提供拦截JavaScript操作的方法,这些方法与Proxy对象的handlers中的方法基本相同. 描述 Refle ...
- Js中Proxy对象
Js中Proxy对象 Proxy对象用于定义基本操作的自定义行为,例如属性查找.赋值.枚举.函数调用等. 语法 const proxy = new Proxy(target, handler); ta ...
- Js中Array对象
Js中Array对象 JavaScript的Array对象是用于构造数组的全局对象,数组是类似于列表的高阶对象. 描述 在JavaScript中通常可以使用Array构造器与字面量的方式创建数组. c ...
- Js中String对象
Js中String对象 String全局对象是一个用于字符串或一个字符序列的构造函数. 描述 创建一个字符串可以通过字面量的方式,通过字面量创建的字符串变量在调用方法的时候能够自动转化为临时的包装对象 ...
- js中WINDOW对象
全栈工程师开发手册 (作者:栾鹏) js系列教程6-BOM操作全解 js中WINDOW对象 BOM的核心是window,而window对象又具有双重角色,它既是通过js访问浏览器窗口的一个接口,又是一 ...
- Vue.js 中的渲染函数是什么?如何使用渲染函数?
Vue.js 中的渲染函数是什么?如何使用渲染函数? Vue.js 是一款流行的前端框架,它提供了许多方便的工具和 API,用于构建交互式的用户界面.其中,渲染函数是 Vue.js 中一个强大的工具, ...
- js中自定义对象、json对象、json字符串、普通js对象 --js学习那本书上的
4.7 自定义对象 JS除了内置对象之外,还允许我们程序自己定义属于我们自己的对象,在JS中自定义对象的方式有2种:通过构造器创建对象,通过初始化器创建对象. 4.7.1 构造器创建对象(原生JS对象 ...
最新文章
- C# HashTable的用法总结
- Windows.etc\hosts文件
- 定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱
- 有两个python怎么停用其中一_python3.X 复学(2)-----开始了就不要停止
- 关于csv文件转化为张量
- Linux操作系统使用基础05:Linux磁盘与文件系统管理
- 查找某个数据,找到后把符合条件数据的一行复制到另外一个地方
- Django项目实践2 - Django模板(view-html)
- 【读书笔记】李彦宏传-张丽,学霸李彦宏:北大信管+留学纽约州立大学+百度创始人
- 360显示服务器拒绝访问,Tecplot 360 2011安装方法 对于“目标文件夹拒绝访问”的解决...
- 百度信息流 绑定服务器,百度信息流账户怎么搭建?百度信息流账户搭建教程...
- SPSS-相关分析(实例讲解)-数据分析
- php 项目如何运行_运行PHP项目(phpstorm+wampserver)
- 微软ASP加密软件 sce10ch
- 非淡泊无以明志,非宁静无以致远。
- 逆波兰式求值 —Java
- richfaces 经典记录
- 51单片机控制的收音机(带串口,遥控,芯片89S52+LC72131+LA1845N)
- ibm服务器修复安装win7系统,联想thinkpad无法开机重装win7,教你重装系统攻略
- 快速傅里叶变换(FFT)(学习笔记)
热门文章
- 近期黑莓手机的性能配置-CPU, Screen, RAM
- Modbus TCP介绍
- Direct3D开发配置指南
- 公开下载 |《2022技术人的百宝黑皮书》来了!
- IBM IEEE 1394黄色感叹号
- yapi接口导出为word_接口文档神器YApi
- 【操作系统】在Linux下用C语言实现BBS聊天系统(实现的功能包括私信、禁言、广播、自定义昵称等)
- 关键词优化系统|智能优化「白狐公羊seo」
- 模拟退火算法优化灰色
- Photoshop CC Coloring Comic Characters Photoshop CC漫画人物着色教程 Pluralsight课程中文字幕