Javascript 作用域&对象简单说明「建议收藏」

Javascript 作用域&对象简单说明「建议收藏」作用域通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑对的局部性,增强了程序的可靠性,减少了名字冲突全局作用域:整个script标签或者是单独的js文件varnum=10;局部作用域:在函数内部就是局部作用域,这个代码的名字只在函数内起效果和作用functionfn(){ 局部作用域…

大家好,欢迎来到IT知识分享网。

作用域

通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑对的局部性,增强了程序的可靠性,减少了名字冲突

全局作用域:
整个script标签或者是单独的js文件

var num = 10;

局部作用域:
在函数内部就是局部作用域,这个代码的名字只在函数内起效果和作用

function fn(){ 
   
	局部作用域
}

变量作用域的分类
在js中,根据作用域的不同,变量可以分为两种全局变量和局部变量
全局变量:
在全局作用域下声明的变量叫做全局变量(在函数外部定义的变量)
全局变量在代码的任何位置都可以使用
特殊情况下,在函数内部使用var声明的变量也是全局变量

var num=10;
console.log(num);
function fn(){ 
   
	console.log(num);
}
fn();

局部变量:
在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量)
局部变量只能在该函数内部使用
函数的形参实际上就是局部变量

function fun(){ 
   
	var num1=10; //num1就是局部变量只能在函数内部使用
}
fun();

从执行效率来看全局变量和局部变量
1、全局变量:只有浏览器关闭的时候才会销毁,比较占内存资源
2、局部变量:当我们程序执行完毕就会销毁,比较节约资源

作用域链:内部函数访问外部函数变量,采取的是链式查找的方式来决定取哪个值,这种结构称为作用域链(就近原则)
在这里插入图片描述
预解析
1、js引擎运行js分为两步:预解析和代码执行
(1)预解析 js以前宁会把js里面所有var 还有function 提升到当前作用域的最前面
(2)代码执行 按照代码书写的顺序从上往下执行
2、预解析分为变量预解析(变量提升)和函数预解析(函数提升)
(1)变量提升 把所有的变量声明提升到当前作用域的最前面,不提升赋值操作
(2)函数提升 把所有的函数声明提升到当前作用域的最前面,不调用函数

对象

在js中,对象是一组无需的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等
对象是由属性和方法组成的
属性:事物的特征,在对象中用属性来表示
方法:事物的行为,在对象中用方法来表示

创建对象的三种方式
在js中,现阶段我们可以采用三种方式创建对象(object)
利用字面量创建对象
利用new Object创建对象
利用构造函数创建对象

1、利用字面量创建对象
对象字面量:就是{}里面包含了表达这个事物(对象)的属性和方法。{}里面采取键值对的形式表示。键:相当于属性名 值:相当于属性值,可以时任意类型的值(数字类型、字符串类型、布尔类型、函数类型等)

var star={ 
   
	name:'小黑',
	age:10,
	sex:'男',
	sayHi:function(){ 
   
		alert('Hello');
	}
};

对象调用:
对象里面的属性调用:对象.属性名,这个小点就理解为”的”
对象里面属性的另一种调用方式:对象[‘属性名’],注意方括号里面的属性必须加引号
对象里面的方法调用:对象.方法名(),注意这个方法名后面一定加括号

console.log(star.name);		//调用名字属性
console.log(star['name'])		//调用名字函数
star.sayHi();		//待用sayHi方法注意,一定不要忘记带后面的括号

总结
变量:单独声明赋值,单独存在
属性:对象里面的变量称为属性,不需要声明,用描述该对象的特征
函数:单独存在的,通过’函数名()’的方式就可以调用
方法:对象里面的含税称为方法,方法不需要声明

构造函数
是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初值,他总与 new 运算符一起使用,我们可以把对象中的一些公共属性和方法取出来,然后封装到这个函数里面

new在执行时会做四件事情:
1.在内存中创建一个新的空对象
2、让this 指向这个新的对象
3、执行构造函数里面,给这个新对象添加属性和方法
4、返回这个新对象(构造函数里面不需要return)

ex:

var obj = new Object();
obj.uname = 'zxyyy';
obj.age = 16;
obj.sex = '男';
obj.sayHi = function(){ 
   
	console.log('Hello');
}

因为我们一次创建一个对象,里面很多属性和方法是大部分相同的
因此我们可以利用函数的方法 重复这些相同的代码 我们就把这个函数称为 构造函数
又因为这个函数不一样,里面封装的不是普通代码 而是对象
构造函数 就是把我们对象里一些相同的属性和方法抽象出来封装到函数里面

构造函数名字的首字母要大写
构造函数不需要 return 就可以返回结果
调用构造函数必须时用new

举个栗子:

function Star(uname,age,sex){ 
   
		this.name=uname;
		this.age=age;
		this.sex=sex;
}
var zxy = new Star('zxyyy',16,'男');
console.log(zxy);

效果如图:
在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24498.html

(0)
上一篇 2023-08-21 11:00
下一篇 2023-08-21 21:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信