JavaScript 高级程序设计 读书笔记
来源:互联网 发布:网络电视有什么功能 编辑:程序博客网 时间:2024/04/29 16:37
var div = document.getElementById("div1");
仅供本人使用,没有很大的阅读价值
2014年2月15日21:52:46
通常javaScript放在head标签之间, 这样的话, 会在所有的javaScript代码都加载完毕之后才开始显示页面, 也就是造成显示的延迟, 这样有两个办法,可以解决, 并且这两个方法等效:
①在<Script>的属性, 设置defer="defer"
②把Script代码写在body之内
2014年2月24日20:44:56
一个变量声明但是没有初始化, 那么它的值自动获得undefined. 使用typeof()函数检测传入的参数时, 对于undefined 类型,得到的是undefined返回值. 而对于赋初值为null的变量, 得到的是object返回值, 也就是说, null 指的是对象指针, 它本身是一个对象. 而奇怪的是 undefined == null 返回的true , 这是需要值得注意的地方.
5
2014年2月25日10:45:55
在《JavaScript高级程序设计》,第二版,30页中, 说对于定义没有赋值的变量、和赋值为null变量, 它们没有toString()方法, 所以最好用String()方法来返回给定对象的值.
而在后文中说, Object的每个实例都有toString()方法, 我的疑问是难道null 和undefined类型的变量不是Object吗, 这里显得很诡异. 后来看到, 所有引用类型的值都是Object的实例.
var c = " 2";var d = 20;var e;alert(e.toString());//忽略alert(d.toString());//有显示这里说明,他们确实没有这个方法.
2014年2月25日18:56:18
在javaScript当中创建对象和添加属性的方式很灵活
var person = new Object();person.ownName = "special";alert(person.ownName);//将显示special
2014年2月25日19:54:45
监测数据类型时, typeof 是一个很强有力的工具, 但是对于赋初值为null的变量和object类型的变量, 返回的都将是object.
那么可以使用instanceof操作符, 使用方法, result = variable instanceof constructor. 如果是 比如: alert(person instanceof Object);可以检测是不是Object变量.
用typeof检测函数的时候会返回function, safari和Chrome 检测正则表达式的时候会也会返回"function".
2014年2月26日10:46:42
创建对象的方式
var person = new Object();person.name = "Lyle";person.age = 20;
var person = { name : "Lyle", age : 20};
2014年2月26日12:01:13
在章节,5.2.2中,有一段代码很有意思.
var colors = new Array("red","blue");colors.push("brown");colors[3] = "black";alert(colors.length);//输出4那么, 如果我直接,
colors[5] = "pink";会怎么样.
当然, 都是undefined.
实验代码是:
var colors = ["red","blue"];colors.push("green");colors[6] = "pink";for(var i=0; i<colors.length;++i){ document.write("<p>"+colors[i]+"</p>"); document.write("<br />");};
2014年2月26日16:14:17
写正则表达式的方式有两种 ,
var p = / [bc]at/ i;var p = new RegExp("[bc]at","i");定义函数有两种方式,
function sum(a,b){ return a+b;}var sum = function(a,b){ return a+b;}
2014年2月26日16:42:43
没有重载的概念, 后面定义的同名函数会覆盖前面定义的同名函数.
2014年2月26日21:00:38
原型模式, 据说, 没定义一个方法,在javaScript当中就会有一个对象, 假如在构造函数中定义了一个属于这个类型(构造函数)的方法(展示叫做show()), 那么,每次调用这个构造方法创建对象的时候. 不同的实例中的show()是不一样的. 那么意思就是说, 每个实例的show()功能都是一样的,但是却用的是不同的对象. 多么浪费啊.
解决的办法就是原型模式, 把成员属性和方法都加到构造函数的prototype里面就可以了, 这里需要理解的就是,其实prototype其实也是一个对象.
原型模式的代码:
function Person(){}Person.prototype.name = "Lyle";Person.prototype.age = 20;Person.prototype.job = "software engineer";Person.prototype.sayName = function(){ alert(this.name);};var person1 = new Person();person1.sayName();var person2 = new Person();person2.sayName();
简化模式的带代码
function Person {}Person.prototype = { name : "Lyle", age : 20, job : "software engineer", sayName : function (){ alert(this.name); };};
2014年2月27日13:17:36
//一般情况下, 都是构造函数模式和原型模式的组合function Person(name ,age, job){ this.name = name; this.age = age; this.job = job; this.friends = ["shelby","Court"];}Person.prototype = { constructor : Person , sayName : function() { alert(this.name); }}
2014年2月27日13:29:30
我有一个问题不明白, 那就是书里面说寄生构造函数模式 和 稳妥构造函数模式, 的严正区别. 寄生模式,返回的是一个Object对象, 和构造函数原型没有什么区别.
打算先不管这些, 然后那些继承也先不管
2014年2月27日15:28:07
arguments.callee 是指向正在执行函数的指针. 在递归中用它来调用函数是再好不过的选择了.
2014年2月28日11:37:23
获得窗口大小以及窗口位置的方式
var text = "the width of this window is ";text +=window.screen.width;text +="<br /> the height of this window is ";text +=window.screen.height;text +="<br />the screenleft is ";text +=window.screenX;text +="<br />the screenTop is ";text +=window.screenY;document.write(text);
2014年2月28日16:23:14
打开新窗口
window.open("http://www.baidu.com","newWindow","height=400,width=400,top=10,left=20,resizable=yes");
2014年2月28日19:46:23
/*位置操作,立即打开新的URL,这里指的是本地url*//*location.assign("http://www.baidu.com"); *window.location("http://www.baidu.com" * /location.href="http://www.baidu.com";//
2014年3月2日15:14:38
在html中,利用<script language="javascript" type="text/javascript" src="./script.js"></script>引入的两个js是不可以相互调用的
2014年3月2日15:35:43
<div id="div1"> <ul style="background-color: saddlebrown; text-align: left"> <li>生活是一种无奈</li> <li>生活是不知所措</li> <li>生活充满了挑战</li> <li>生活意味你还活着</li> </ul></div>
在这里,对于
var div = document.getElementById("div1");
返回的div中, div的childNodes 中有三个字节点,如果写成
<div id="div1"><ul style="background-color: saddlebrown; text-align: left"> <li>生活是一种无奈</li> <li>生活是不知所措</li> <li>生活充满了挑战</li> <li>生活意味你还活着</li> </ul></div>则,只有一个子节点.
代码如下
var div = document.getElementById("div1");var arrayOfNodes = Array.prototype.slice.call(div.childNodes,0);document.write(arrayOfNodes+"<br />");for(var i=0; i<arrayOfNodes.length; ++i){ var a = arrayOfNodes[i]; document.write(">>>"+a.nodeName+" "+ a.nodeType+" "+a.nodeValue+"<br />");}
输出
[object Text],[object HTMLUListElement],[object Text]
>>>#text 3
>>>UL 1 null
>>>#text 3
- javascript高级程序设计-----------------读书笔记
- JavaScript 高级程序设计 读书笔记
- 《javascript高级程序设计》读书笔记
- 《JavaScript高级程序设计》读书笔记
- 《javascript高级程序设计》读书笔记
- JavaScript高级程序设计 读书笔记
- JavaScript高级程序设计--读书笔记
- Javascript高级程序设计 读书笔记
- <<JavaScript高级程序设计>>读书笔记
- JavaScript高级程序设计读书笔记
- javascript高级程序设计读书笔记(一)
- JavaScript高级程序设计读书笔记(二)
- JavaScript高级程序设计 读书笔记(一)
- 《javascript高级程序设计》读书笔记-基本概念
- 《Javascript高级程序设计》--读书笔记(一)
- 《Javascript高级程序设计》--读书笔记(二)
- 《JavaScript高级程序设计》读书笔记1
- 《JavaScript高级程序设计》读书笔记(一)
- mybatis关联外键查询
- javascript执行环境(作用域)与作用域链深入剖析及项目经验
- Emacs+Auctex+TexLive 便携式
- JVM结构整理
- 联想笔记本后面的括号英文A C D H T L含义
- JavaScript 高级程序设计 读书笔记
- 《Ext JS权威指南》节选:在Visual Studio中实现Ext JS智能提示
- UpdatePanel工作原理
- C++中的指针和->操作符
- 分页算法
- 借到两本书
- 二叉树的镜像
- mongodb 存储结构
- Linux (Ubuntu) 下Zeus 环境的搭建和配置