1.一般而言,在Javascript中,this指向函数执行时的当前对象。举例如下:

var someone = {
name: "Bob",
showName: function(){
alert(this.name);
}
}; var other = {
name: "Tom",
showName: someone.showName
} other.showName();  //Tom

this关键字虽然是在someone.showName中声明的,但运行的时候是other.showName,所以this指向other.showName函数的当前对象,即other,故最后alert出来的是other.name。

当没有明确的执行时的当前对象时,this指向全局对象window。

var name = "window";

var Bob = {
name: "Bob",
showName: function(){
alert(this.name);
}
}; var Tom = {
name: "Tom",
showName: function(){
var fun = Bob.showName;
fun();
}
}; Tom.showName();  //window

想要让它输出Tom,可以使用下面的代码:

var name = "Bob";
var nameObj ={
name : "Tom",
showName : function(){
alert(this.name);
},
waitShowName : function(){
var that = this;
setTimeout("that.showName();", 1000);
}
}; nameObj.waitShowName();

2.在if语句中,各个类型变量的判定如下:
String类型有内容判断true,无内容,判断为false,Number类型的变量,1判断为true,0判断为false.对于对象来说,为null为false,而不为null则为true

<head>
<meta charset="UTF-8">
<title>测试各个范围的变量在if</title>
</head>
<body> </body>
<script>
var a; //测试undefined
if(a) {
alert('a is true '+a);
}
else {
alert('a is false '+a);
}
/**
* 测试结果在a为undefined的时候,在if语句内判断为false
*/
var b=""; //b为没有内容的字符串
if(b) {
alert('b is true' +b);
}
else {
alert('b is false '+b);
}
/**
* 测试结果在b为空字符串 的时候,if语句判断为false
*/
var c="abc";
if(c) {
alert('c is true'+c);
}
else {
alert('c is false '+c);
}
/**
* c为有内容的字符串,if语句中判断为true
*/
var d=1;
if(d) {
alert('d is true'+d);
}
else {
alert('d is false'+d);
}
/**
* d为1,在if语句判断为true
*/
var e=0;
if(e) {
alert('e is true'+e);
}
else {
alert("e is false"+e);
}
/**
* e为0,在if语句中判断为false
*/
var f=new Array(4);
if(f) {
alert('f is true '+f);
}
else {
alert('f is false '+f);
}
/**
* 如果f为对象的话,就为true,当f为null的时候,为false
*/

3.HTMLDOM对象可以理解为和获取Java对象的属性一样,例如获取了一个div元素div,它有个style属性,style属性里可以设置display属性的值,因此就直接使用div.style.display=''inline";这里注意一点,这种方法只能获取属性.但是不代表嵌套的元素可以获取.例如如果bldy中只有一个子元素叫做div,那么是不存在body.div的.相关的HTMLDOM元素需要看文档才能弄清楚.
4.javascript中的document.write属性:它支持在文档中写内容.但是它会将文档中原有的内容全部覆盖!所以一般不用于去写内容.
5.javascript变量的重新声明:如果重新声明javascript变量,该变量的值不会丢失.例如:

var x=2;
var x; //x依然为2.

6.js对象的属性的寻址有两种方式:name=person.lastName,name=person["lastName"].
7.js对象的生命周期:js变量的生命从它们被声明开始,然后局部变量会在函数运行以后被删除,全局变量会在页面关闭后删除.

8.js中只有两种循环:for循环和while循环.
9.typeof和Instance of区别:typeof判断元素的数据类型,返回的是string,而instanceof则判断的是某个对象是否属于某个引用类型.返回的是boolean.需要注意的是,用var定义的变量如果是字符串数据类型也只是string.用instance of String依然返回false.

<script>
var a='abc';
var b=new String('abc');
alert("var--"+(a instanceof String));
alert("new--"+(b instanceof String));
</script>

10.js中的void运算符:
• void后面的任意结果都会被转移成undefined,因此采用void(0)来代替undefined更加安全可靠.
• void可以填充a的href确保点击之后不会发生跳转,这就是页面中经常看到的javascript:void(0)(javascript的内嵌引入,不执行任何操作)
11.js中的parseInt函数:
解析字符串,并将其转化为整数:与Java的parseInt不同的是,它会试图从字符串的第一个字符开始按照顺序解析,直到遇到非数字.如果字符串第一个字符就是非数字,则不会进行解析.例如parseInt(2.32)为2,parseInt(12a)为12
12.js的关系运算符:js的关系运算符和==运算符一样,会在比较的时候,试图进行类型转换.例如:11>"2"则返回为true

JavaScript学习笔记及知识点整理_2的更多相关文章

  1. JavaScript学习笔记及知识点整理_3

    1.js的事件冒泡及阻止方法:事件冒泡的概念:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事 ...

  2. JavaScript学习笔记及知识点整理_1

    一.js的基础部分 1.==和===的区别:==在判断是否相等的时候会进行类型转换,有时会得到非常奇怪的结果,因此一般情况下都是用===判断是否相等2.strict模式:在js中,如果一个变量没有用v ...

  3. 大数据 -- kafka学习笔记:知识点整理(部分转载)

    一 为什么需要消息系统 1.解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多 ...

  4. kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  5. [Big Data - Kafka] kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  6. JavaScript学习笔记——对象知识点

    javascript对象的遍历.内存分布和封装特性 一.javascript对象遍历 1.javascript属性访问 对象.属性 对象[属性] //字符串格式 //javascript属性的访问方法 ...

  7. 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要三

    最近工作较忙,手上有几个项目等着我独立开发设计,所以平时工作日的时候没有太多时间,下班累了就不想动,也就周末有点时间,今天我花了一个下午的时间来继续总结与整理书中要点,在整理的过程中,发现了书中的一些 ...

  8. Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  9. 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要系列文章索引

    从发表第一篇文章到最后一篇文章,时间间隔有整整一个月,虽只有5篇文章,但每一篇文章都是我吸收<LEARNING HARD C#学习笔记>这本书的内容要点及网上各位大牛们的经验,没有半点废话 ...

随机推荐

  1. php安装memcache注意事项

    有没有谁遇到过这样的问题:在php.ini里面 extension=php_memcache.dll添加了memcache扩展,在ext目录里也添加了php_memcache.dll文件.但用phpi ...

  2. Spark在Yarn上运行Wordcount程序

    前提条件 1.CDH安装spark服务 2.下载IntelliJ IDEA编写WorkCount程序 3.上传到spark集群执行 一.下载IntellJ IDEA编写Java程序 1.下载IDEA ...

  3. 【Android测试】【第十八节】Espresso——环境搭建

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5604642.html 前言 首先还是老规矩,看看官方文档吧 ...

  4. kibana使用操作部分

      1.kibana的概念及特点. 概念:数据可视化平台工具 特点: - 灵活的分析和可视化平台 - 实时总结和流数据的图表 - 为不同的用户显示直观的界面 - 即时分享和嵌入的仪表板   2.kib ...

  5. Vcenter server 5.5克隆模板(创建ISO镜像)

    1.进入Vcenter server 5.5控制台 --- 选择虚拟机和模版. 2.右键 XP_32 --- 模版 ---- 克隆为模板(Vcenter server 5.5连接的VMware ESX ...

  6. App Store有哪些原因会影响app应用上架呢?(分享)

    App Store对于应用上架的审核是非常严格的,很可能一个没有注意到的细节,或者一个你根本没想想到的原因就会导致你的应用上架失败.而排除这些无可避免的错误以外,还有一些导致应用上架失败的原因,非常常 ...

  7. 如何学习Python

    [整理]如何学习Python + 如何有效利用Python有关的网络资源 + 如何利用Python自带手册(Python Manual) http://www.crifan.com/howto_lea ...

  8. (九)串行口方式0 拓展并行输出端口 02 74LS164芯片

    1.先讲解74LS164 移位芯片: 74HC164.74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出. 数据通过两个输入端(DSA 或 DSB)之一串行输入:任一输入端可 ...

  9. Python快速建站系列-Part.Five.2-个人主页及文章列表

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 从usercen.html就可以发现我为个人主页设了三个分开的小版面:写文章.个人文章目录.个人资料 所以按顺序Part.Five的第二部分就完 ...

  10. 【01:转自知乎:关于 openSUSE 】

    我是 openSUSE 中文维基唯一的非官方维护者,openSUSE 简体中文翻译团队召集人,linuxsir SuSE 版块的版主,openSUSE 官方论坛 http://forums.opens ...