js重点
2024-09-07 21:18:27
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
// function add (){
// var a = 3;
// return a
// }
//一般情况下,函数声明的局部变量,在函数调用完之后就会被销毁掉
// console.log(add())
// add()
//
//
// function add(){
// var a = 3
// return function(){
// return a
// }
// }
//
// abc = add()
// console.log(abc()) //闭包的好处 // var list = [f0,f1,f2]
// f0()---->0
// f1()---->1
// f2()---->2
//假设需要一个列表,这个列表存放n个函数,只要调用list[i](),那么就会返回i //-----------------------------------案例1:
// var list = []
//
// for(var i=0;i<3;i++){
// var temfn = function(){
// return i
// }
// list.push(temfn)//将函数添加进列表
// }
//
// console.log(list)
// list[0]() //====> 3 //----------------------------------案例1:解决方案 var list = []
for (var i=0;i<3;i++){
//匿名函数通过自己调用自己执行,获取i值传入num参数
//num参数这个变量被返回的匿名函数所引用,所以参数num不会被销毁,使得num参数可以保留。
var temfn = (function(num){
return function(){
return num
}
})(i)
list.push(temfn)
} // console.log(list[0]()) function Counter(){
var num = 0
return function(){
num ++
return num;
}
} var abc = Counter()
console.log(abc())
console.log(abc())
console.log(abc()) //能不用闭包,就尽量不用闭包,因为会导致内存的可使用量下降(内存泄漏) </script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
// a = add(3,4)
// console.log(a) //将一个匿名函数给到1个变量
// var add = function(a,b){
// a = a + 1;
// b = b + 1;
// return a+b
//
// console.log(123)
// } //直接申明函数的方式
// function add (a,b){
// a = a + 1;
// b = b + 1;
// return a+b
// }
//注意:直接申明函数的方式,浏览器会自动将它提升到最前面。 //js不会对函数的参数进行检查
// a = add()
// console.log(a)
//
//返回值通过return返回出去,return语句执行之后,不会再继续执行函数后面的内容。 // function add(a=3,b=4){
// console.log(a,b)
// a = a + 1;
// b = b + 1;
//
// return a+b
// } function add(a,b){
if(a==undefined){
a = 3
}
if(b == undefined){
b = 4
}
a = a + 1;
b = b + 1; return a+b
} console.log(add())
var student = {name:'xx',age:16} function abc(){
//在函数里面,用var申明使这个函数的局部变量,在其他地方是拿不到的
var num = 3
var student = {name:'666'}
return student.name
} console.log(abc())
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
//1、字面量的方式,偶尔创建一个特定的对象,那么就是最简单和便捷方式
var student = {
name:'xx',
age:'xx'
}
//2、构造函数的方式
var student = {}//构造一个新的空对象
var student = new Object()//构造一个新的空对象 student.name = 'xx'
student.age = 'xx' //3、创建一个函数来构造一个对象,工厂模式
function Student(name,age){
var student = {}
student.name = name;
student.age = age
return student
} var s1 = Student('xx','xx');
var s2 = Student('mingzi','nianling') //4、构造一个构造函数,通过构造函数,实例化一个对象
function Student(name,age){
this.name = name;
this.age = age
this.showName = function(){
console.log(this.name)
}
//没有返回值
} var s3 = new Student('gzhanshu','xxx')
//如果使用了new 调用函数,那么首先会创建1个对象,并且将这个对象赋值s3,如果函数里有this,那么这个this就是这个新创建的对象
var s4 = Student('yyy','uuu')//如果没有new,就是一个普通函数,那么普通函数没有返回值,就是未定义 </script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
//构造一个构造函数,通过构造函数,实例化一个对象
function Student(name,age){
this.name = name;
this.age = age
console.log(name)
//没有返回值
} function Man(){
this.run= function(){
console.log('会跑')
}
this.showName = function(){
console.log(this.name)
}
} var man = new Man()
//设定构造函数对象的属性prototype,将原型对象给到这个prototype属性
Student.prototype = man var s3 = new Student('gzhanshu','xxx') //原型对象也可以有原型,那么原型的原型所形成的链式,那么就叫做原型链
//原型里面属性方法可以被,实例化的对象共享。大大的减少内存的消耗
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
//对象也存放一组数据的地方
//student,学生姓名,学生年龄,会考试,会读书,会唱歌 //字面量的方式
var student = {
name:'老王',
age:'30',
dizhi:'隔壁',
isMan:true,
son:{name:'xiaowang',age:3},
action:function(){
console.log('拐卖良家妇女')
}
}
console.log(student) //想要获取里面的属性
// student['属性值']
// student.属性值
// 我们如果想要用变量的情况下,那么就要用中括号。 // student.xuehao = 123456789
// student['xuehao'] = 12432342
// console.log(student) var student2 = new Object()
student2.name = 'xxzz'
student2.age = 16
console.log(student2)
</script>
</body>
</html>
最新文章
- 百度UEditor基本使用
- ramnit病毒
- nginx基于IP的虚拟主机
- SecureCrt脚本(一)顶级对象之Crt
- 文章转载至CSDN社区罗升阳的安卓之旅,原文地址:
- Android中数据库的操作流程详解
- ##DAY12 UITableViewCell自定义
- URAL 6089 Nine
- Java的递归、IO流
- javascript基础 之 代码规范
- 解决Eclipse中无法直接使用Base64Encoder的问题(转载)
- Elasticsearch(ES)API 增删查改常用操作
- [NOI2016]优秀的拆分&;&;BZOJ2119股市的预测
- Unity之AssetBundle打包
- GeneralizedLinearAlgorithm in Spark MLLib
- VS2017写代码时几个常用的快捷键
- jQuery.page 分页控件
- Spring Boot之初始化项目
- Ubuntu下编译安装OpenCV 2.4.7并读取摄像头
- 关于Oracle分区表的理解