<!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>

js重点的更多相关文章

  1. JS重点特性——闭包详解

    闭包特性:可以让定义好的函数作用域在调用时发生改变,具体说,调用运行时,可以让(定义时)作用域外其他函数访问到本函数的局部变量甚至参数.举例代码如下: <!DOCTYPE html> &l ...

  2. js重点——作用域——作用域分类(三)

    一.作用域可以分为全局作用域,局部作用域(函数作用域)和块级作用域. 1.全局作用域 代码在程序中的任何位置都能被访问到,window对象的内置属性都拥有全局作用域. <script> v ...

  3. js重点——作用域——简单介绍(一)

    一.作用域 定义:在js中,作用域为变量,对象,函数可访问的一个范围. 分类:全局作用域和局部作用域 全局作用域:全局代表了整个文档document,变量或者函数在函数外面声明,那它的就是全局变量和全 ...

  4. js 重点 (转载)

  5. js重点--原型链继承详解

    上篇说过了关于原型链继承的问题,这篇详解一下. 1. function animals(){ this.type = "animals"; } animals.prototype. ...

  6. js重点--this关键字

    推荐博客:https://www.cnblogs.com/huaxili/p/5407559.html this是JavaScript的一个关键字,表示的不是对象本身,而是指被调用的上文. 主要用于以 ...

  7. js重点--原型链

    通过将一个构造函数的原型对象指向父类的实例,就可以调用父类中的实例属性及父类的原型对象属性,实现继承. function animals(){ this.type = "animals&qu ...

  8. js重点--匿名函数

    推荐博客:https://www.cnblogs.com/pssp/p/5216668.html 函数是必须要有函数名的,不然没有办法找到它,使用它. 如果没有名字必须要有一个依附体,如:将这个匿名函 ...

  9. js重点--闭包

    闭包: 1.获取到局部变量,相当于是函数局部与外部的桥梁 2.使局部变量保存在内存中,不被回收 <script> function outerFn() { var outerVar = 0 ...

随机推荐

  1. JAVA线程通信之生产者与消费者

    package cn.test.hf.test3; import java.util.concurrent.locks.Condition;import java.util.concurrent.lo ...

  2. 【SQL server基础】objectproperty()函数

    SQL Server OBJECTPROPERTY使用方法   OBJECTPROPERTY 返回有关当前数据库中的模式作用域对象的信息.此函数不能用于不是模式范围的对象,例如数据定义语言(DDL)触 ...

  3. 说说 Java 线程间通信

    序言 正文 一.Java线程间如何通信? 线程间通信的目标是使线程间能够互相发送信号,包括如下几种方式: 1.通过共享对象通信 线程间发送信号的一个简单方式是在共享对象的变量里设置信号值:线程A在一个 ...

  4. Vue:获取当前定位城市名

    实现思想:通过定位获取到当前所在城市名: 1.在工程目录index.html中引入: <script type="text/javascript" src="htt ...

  5. Zookeeper工作过程详解

    一.Zookeeper工作机制 分布式和集中式系统相比,有很多优势,比如更强的计算能力,存储能力,避免单点故障等问题.但是由于在分布式部署的方式遇到网络故障等问题的时候怎么保证各个节点数据的一致性和可 ...

  6. [Note] 使用Code Snippet简化编码

    使用NewtonSoft.Json写实体类时大量格式一致的代码出现 ,这时可以使用Code snippet来加快编码速度 [JsonProperty(PropertyName = "mess ...

  7. 【maven的使用】1maven的概念与配置

    maven是一个基于java平台的自动化构建工具.构建工具的发展由make->ant->maven->gradle其中gradle还在发展中,使用较少,学习难度比较大,所以目前占据主 ...

  8. Vue中使用key的作用

    key的作用是为了在diff算法执行时更快的找到对应的节点,提高diff速度 key具有唯一性 vue中循环需加 :key=“唯一标识” ,唯一标识可以使item里面id index 等,因为vue组 ...

  9. [插件化开发] 1. 初识OSGI

    初识 OSGI 背景 当前product是以solution的方式进行售卖,但是随着公司业务规模的快速夸张,随之而来的是新客户的产品开发,老客户的产品维护,升级以及修改bug,团队的效能明显下降,为了 ...

  10. LeetCode_232-Implement Queue using Stacks

    题意是使用栈实现队列:队列是先进先出,后进后出. class MyQueue { public: /** Initialize your data structure here. */ MyQueue ...