老师的总结


一、词法结构

 

1、区分大小写

 

2、注意   // 单行      /*  多行注释  */

 

3、字面量(直接量  literal)

 

12  //数字

 

5.8 // 小数

 

"hello"  

 

‘hello‘

 

true

 

/js/gi  //正则

 

null    //空

 

{x:1,y:2}

 

[1,2,3,4]

 

4、标示符(变量)和保留字

 

5、分号可以省略但是可能会产生问题,js会自动补;

 

var y = x+f

 

(a+b).toString()  

 

等价于

 

var y = x+f(a+b).toString();

 

二、类型、值和变量

 

1、原始类型   数字、字符串和布尔   null空  undefined未定义

 

2、对象类型

 

3、类  Array  Function Date RegExp  Error

 

4、js解析器 中集成了垃圾回收

 

5、任意js的值都可以转为布尔值

 

undefined

 

null

 

0

 

-0

 

NaN

 

""     都被转换为false

6、包装对象

 

var s= "hello";  //原始类型 (没有方法)

 

s.len = 4; //当调用原始类型的属性或方法的时候(原始类型是没有属性和方法的)

 

 //只要引用了字符串的属性或方法,就会调用new String(s)把原始类型,包装成对象

 

 //以后调用s.len 是调用String对象的属性和方法,一旦引用结束,新创建的临时对象会销毁

 

var n = s.len;   //此时为undefined

 

alert(n);

 

 

 

//调用字符串  布尔 数字的属性或方法时,创建的临时对象。是包装对象

 

显示定义包装对象  var S = new String("hello")

 

var s = "hello";  是不同的

 

7、==和===

 

8、类型转换

 

var n = 17;

 

alert(n.toString(2));  //二进制  10001

 

alert(n.toString(8));  //  021

 

alert(n.toString(16)); //  0x21

 

alert(n.toString(10));  alert(n.toString());

 

9、toString()  valueOf()

 

var date = new Date(2011,1,3);

 

date.valueOf()   返回毫秒数代表的时间

 

10、js是动态类型  var n = 10;  程序运行期间 才会确定变量的类型

 

11、变量作用域

 

函数作用域和声明提前

 

函数内定义的变量 声明自动提前到函数顶部

 

12、作用域链scope chain

 

在不包含函数的函数体内,作用域链有两个对象,第一个是定义函数

 

参数和局部变量的对象,第二个是全局对象。

 

在一个嵌套函数体内,作用域链上至少有三个对象。

 

 

 

定义一个函数时,它保存了一个作用域链。调用函数时,它创建一个

 

新的对象存储它的局部变量,并将这个对象添加到保存的那个作用域链

 

上,同时创建一个新的更长的表示函数调用作用域的“链”。对于嵌套函数

 

每次调用外部函数时,内部函数会重新定义一遍。每次调用外部函数的时候

 

作用域链是不同的。

 

13、delete  in  eval  void

 

 

第五章 对象

 

1、对象的基本操作  create  set  query delete test  enumerate

 

2、对象的属性特性  可写  可枚举  可配置(是否可删除)

 

3、对象的对象特性  

 

对象的原型 prototype

 

对象的类  标示对象类型的字符串

 

对象的扩展标记  是否可添加新属性

 

//创建对象的三种方法

 

4、对象直接量

 

var empty = {};

 

var point = {x:0,y:0};

 

5、new创建对象

 

var o = new Object();  //空对象  和{}一样

 

var a = new Array();

 

6、Object.create()

 

var o1 = Object.create({x:1,y:2});  //o1 继承自对象原型{x:1,y:2}

 

var o2 = Object.create(null);       //o2不继承任何属性和方法

 

var o3 = Object.create(Object.prototype);  

 

//空对象和 {} new Object()一样

 

7、属性的操作  作为关联数组的对象

 

object.property

 

object["property"]   散列  映射  字典 关联数组

 

8、继承

 

js的继承只能从父类获取属性的值,而不能修改原型链

 

如果对象book为null或undefined

 

 book.subtitle.length会报错

 

 解决方法

 

 var len = book && book.subtitle && book.subtitle.length;

 

 

 

 删除属性

 

 delete book.subtitle

 

 

 

 检测属性  in  hasOwnPreperty()  propertyIsEnumerable()

 

 var o = {x:1};

 

 "x" in o

 

 "toString" in o

 

 

 

hasOwnPreperty();判断属性是否是自己的。继承属性返回false

 

 

 

propertyIsEnumerable() 只有是自有属性,并可枚举

 

 

 

 

 

获取所有属性

 

Object.keys()

 

Object.getOwnPropertyNames()

 

9、属性getter和setter

 

 var o = {

 

    x: 0,

 

    y: 1,

 

    set r(value) { value = this.r;},

 

    get r() { return this.x + this.y;}

 

};

 

x数据属性,r存取器属性

 

10、属性的特性  ecmascript5   老的ie不支持如下用法

 

数据属性的特性:值value 可写性writable

 

可枚举enumerable

 

可配置configurable

 

存取器属性特性:get  set

 

可枚举enumerable

 

可配置configurable

 

//返回{value:1,writable:true,emunerable:true,configurable:true}

 

Object.getOwnPropertyDescriptor({x:1},x)

 

//查不到属性 返回undefined

 

 

设置属性的特性  不能修改继承的属性特性

 

Object.defineProperty()

 

//设置不可枚举属性

 

var o = {};

 

Object.defineProperty(o,"x",{

 

value:1,

 

writable:true,

 

emunerable:false,

 

configurable:true

 

})

 

 

 

//设置只读

 

Object.defineProperty(o,"x",{writable:false})

 

 

 

修改多个属性特性

 

Object.defineProperties()

 

 

 

扩展Object.prototype   书 P137

 

11、对象的三个属性

 

prototype  class  extensible attribute

 

 

 

查询对象的原型

 

ecmascript5中 Object.getPrototypeOf(o1)

 

ecmascript3中 o1.constructor.prototype

 

 

 

通过对象直接量或new Object()方式创建的对象

 

包含一个constructor的属性,指Object()的构造函数

 

constructor.prototype才是真正的原型

 

 

 

p.isPrototypeOf(o)检测对象p是否是o的原型

 

 

 

 

 

//获取对象的类型 字符串

 

Object.prototype.toString.call(o1).slice(8,-1)

 

12、对象的可扩展性

 

对象是否可以新加属性

 

Object.preventExtensions() 设置对象不可扩展

 

Object.isExtensible()

 

Object.seal()  除了将对象设置为不可扩展,还将属性设置为不可配置

 

Object.freeze()

 

除了将对象设置为不可扩展,将属性设置为不可配置,还把属性设置为只读

 

 

 

第8章 函数

 

1、函数调用,方法调用

 

function t(){ }

 

t();  函数调用  this是全局对象  严格模式下是undefined

 

 

 

var o = {a:function(){}};

 

o.a()  方法调用  this是当前调用的对象

 

2、构造函数调用

 

var o = new Object();  var o= new Object;

 

o继承自构造函数的prototype属性  内部的this是此对象

 

 

 

var r = new o.m();中的this不是o

 

3、P184 函数的执行用到了作用域链,这个作用域链是函数定义的时候创建的。

 

嵌套的函数f()定义在这个作用域链里,其中的变量scope是局部变量

 

 

 

 

 

作用域链    

 

 

调用s()将创建函数s的执行环境(调用对象),并将该对象置于链表开头,

 

然后将函数t的调用对象链接在之后,最后是全局对象。然后从链表开头寻找变量name   

 

 

 

调用ss()     ss() ==>  t()  ==> window

 

name="lwy";  

 

function t(){  

 

    var name="tlwy";  

 

    function s(){  

 

var name="slwy";  

 

console.log(name);  

 

    }  

 

    function ss(){  

 

console.log(name);  

 

    }  

 

    s();  

 

    ss();  

 

}  

 

t();  

 

 

 

每次调用函数,都会生成一个新的作用域链。包括新的内部变量

时间: 2024-08-11 03:37:26

老师的总结的相关文章

【团购巨划算】韩立刚老师门徒级学习专题,只此一次的超大优惠福利

Q:韩立刚老师是谁? A:韩老师是51CTO金牌讲师(最高级别),也是微软最有价值专家MVP.微软企业护航专家.<计算机网络原理>一书作者 讲师主页:http://edu.51cto.com/lecturer/400469.html Q:门徒级学习专题是什么? A:韩立刚老师门徒级课程专题(Windows Server+网络安全+数据库) 韩老师从2013年至今,根据企业对IT运维人才的技术要求,录制视频教程49 门,时长达581小时50分钟.旨在从0起点培养企业高端IT人才,让你在企业IT部

关于孩子教育,老师想告诉家长的5件事

1. 孩子能做的事情远比你以为的要多. 虽然有那么多与之相悖的证据,但你的孩子确实不需要你帮忙系鞋带.拉拉链.削铅笔.理书包和午餐盒,以及每天无数件他们指望着你来出手相助的事情. 如果你觉得孩子们磨磨蹭蹭出一次门要费半天劲,试想一下,每天六次,老师们得把20个孩子领出教室大门.小学老师是委派任务的高手,这样一来,擅长系鞋带的孩子就成为其他小朋友们的“系鞋带专家”,而掌握了拉拉链技能的孩子可以得到“拉链帮手”的光荣使命,在你还没要求孩子学会“自立”前,班上所有小学生都学会了自己系鞋带.拉拉链.戴手

java基础异常(毕向东老师)

异常:不正常.在运行时期发生的一些不正常情况.就是异常.异常的由来.程序运行是总会class ExceptionDemo{public static void main(String[] args){int[] arr=new int[2];System.out.println(arr[2])}} 异常情况有多钟,都需要分别描述,意味着异常情况应该会有一个体系.多一个异常具备共性不断地向上抽取,就形成了体系.异常还有一个父类.通过查阅API,发现异常体系是这样的:Throwable|--Erro

UESTC_方老师的分身 II CDOJ 915

方老师的分身 II Time Limit: 10000/5000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 方老师计算出了走路时间最长的那个分身所用的时间.于是有个特殊的分身(据说是方老师真身!)就不想如此古板的走最短路了!由于这个分身的特殊性,这个分身对于单向边可以当双向边走.但是这个特殊的分身想走最短路的同时,要求至少经过k条边. Input 有多组数据 第一行两个整数n,m(1≤n

YESLAB 7月12日陈老师CCNA+CCNP真机Rack实战课程

CCNA 是网络行业的入门课程,为了能够让学员很好的了解网络,Yeslab提供真实设备Rack,学员实战搭建拓扑.完成配置,为学员打造一个真实的网络,总之只要学员想学,Yeslab毫不吝啬 CCNP路由部分为IE的基础,只有基础打的牢,楼才能盖得高,Yeslab拒绝Paper IE,除此之外Yeslab还针对工作特别开发了面试模拟课程,可以针对集成商,厂商的职位进行不同级别的面试,能够让学员不单单的只是找到工作,而是对职业有个好的规划. 交换一直是思科培训里比较弱化的一门,不过Yeslab提供真

学习陈安之老师《人生八个不能等》

1,贫穷不能等,因为时间久了,你就会贫穷习惯了: 2,梦想不能等,因为努力晚了,人老了就无能为力了: -- 关注微信,了解更多.   学习陈安之老师<人生八个不能等>,布布扣,bubuko.com

赵强老师:免费实战微课系列课程

赵强老师实战微课系列课程 Oracle数据库.大数据.Weblogic中间件 永久免费!!! (*)赵强老师实战微课之一:在Oracle SQL*PLUS中修改SQL语句 http://edu.51cto.com/course/course_id-9016.html (*)赵强老师实战微课之二:搭建Hadoop的Eclipse开发环境 http://edu.51cto.com/course/course_id-9017.html (*)赵强老师实战微课之三:使用Weblogic Console生

查看本学期老师所教的课程

import re import requests import pymysql base_url = "http://202.192.240.54/kkcx/" # 连接mysql db = pymysql.connect(host="localhost",user="root",passwd="root",db="course_teacher",charset="utf8") cur

Hadoop大数据赵强老师免费公开课招募啦~~~~

Hadoop大数据公开课招募啦~~~ 赵强老师免费公开课 l  时间:2017年03月14号晚19:30-21:00 n  19:30-20:30讲述Hadoop的背景知识,包括:大数据背景.数据仓库.Hadoop的思想来源(Google的三大思想) n  20:30-21:00答疑 l  讲师简介 13年IT行业从业经历,清华大学计算机硕士,曾在BEA.甲骨文.摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大数据.数据库.中间件技术和Java技术. 讲师详情链接:http:

50个查询系列-第七个查询:查询学过“叶平”老师所教的所有课的同学的学号、姓名

效果是: 我们查出来叶平的教的课的id是002和016.我们选出的学生同时有这两门课. 如下: ------------------------------------------------------------------------------------------------------------------------------------------------- 具体的做法: 第一步:查找叶平的id select  tblteacher.TeaId from tblteac