`
suifongqi
  • 浏览: 54366 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

读李战《悟透JAVASCRIPT》笔记一

阅读更多
最近工作较为轻闲,买了一阵的javascript终于有时间看看了,以下是该书第一部分的笔记。
简单数据五种:
undefined null boolean number string
复杂数据一种:
object
JavaScript中的代码形式体现为:function
typeof 123
typeof(123)类型是“number”
typeof typeof(123) 类型是“string
typeof(null)类型是object,但null并非是object类型

undefined ,null,"",0逻辑值都为false
undefined==null
"123"==123为true
"0123"==0123为false
"123"===123为false
简单类型不具备对象化能力

javascript没有类

<script type="text/javascript">
var life={};
for(life.age=1;life.age<=3;life.age++)
{
	switch(life.age)
	{
		case 1:
		life.body="我出生了";
		life.say = function(){alert(this.body)};
		break;
		case 2:
		life.body="我长大了";
		life.brother="小弟弟变大了";
		life.say = function(){alert(this.body+"-"+this.brother)};
		break;
		case 3:
		life.body="我老了";
		life.brother="儿子出来了";
		life.say = function(){alert(this.body+"-"+this.brother)};
		break;
		
	}
	life.say();
}
</script>
如上对象不断进化。
<script type="text/javascript">
function my()
{
	alert("神啊");
};
var my2 = function()
{
	alert("神仙");
};
alert(typeof(my2));等到的值是funtion
alert(typeof(my));
my2();函数调用
my();
</script>

javascript缺省作用域就是——window对象
var name = "名字";name代表window作用域下的一个变量
name="名字";name代表window对象中的一个属性
var只在本作用域有效
函数的caller属性,返回调用函数的父函数,若值为null,代表:无调用或为全局代码调用,caller属性Opera浏览器不支持
arguments对象,可以以数组的形式访问函数参数
eval()函数不创建新的作用域,以为着访问当前作用域


对象化能力
javascript中只有object与function具备此能力
<script type="text/javascript">
var myObject = {};
myObject.aProperty="属性";
myObject.aMethod = function(){
	alert("方法");
}
alert(myObject["aProperty"]);
myObject["aMethod"]();//以数组的方式调用函数

for(var s in myObject)
{
	alert("s is a "+typeof(myObject[s]));//遍历对象中的属性与方法
}
</script>
函数也能如上使用

javascript中的this不等价与其它编程语言中的this,self,me之类
<script type="text/javascript">
var aMethod = function(){
	alert(this.name+" 方法");
}
aMethod.call({name:"nobody"});//此时this.name为nobody
</script>

javascript对象的创建
称之为:JSON,javascript对象表示法,每项用“,” 分割
空对象
var a = {};
带属性和方法
var b = {name:"jun",eat:function(){alert("吃饭求")}};

构造对象--函数当构造函数用
<script type="text/javascript">
function Person(name)
{
  this.name = name;
  this.sayHello = function(){
   alert("hello,I'm "+this.name);
  }
}

function Employee(name,salary)
{
	Person.call(this,name);
	this.salary = salary;
	this.showMeTheMoney = function()
	{
		alert(this.name + "$"+this.salary);
	}
}

var bill = new Person("bill");
var json = new Employee("json",134);
bill.sayHello();
json.sayHello();
json.showMeTheMoney();

alert(bill.constructor==Person);//true
alert(json.constructor==Employee);
alert(bill.sayHello == json.sayHello);//false
</script>


prototype原型:提供了一群同类对象共享属性和方法的机制

<script type="text/javascript">

function Person(name)
{
  this.name = name;//各对象一份name
  Person.prototype.sayHello = function(){//共享sayHello方法
   alert("hello,I'm "+this.name);
  }
}



var bill = new Person("bill");
var json = new Person("json");
bill.sayHello();
json.sayHello();
alert(bill.sayHello == json.sayHello);

</script>
原型链,到头是object原型所指定的对象
原型可以在本对象中本重写覆盖,但同类对象并不受影响
分享到:
评论
7 楼 suifongqi 2009-07-28  
其实我学js主要是想看看,JAVA在使用SCRIPT API后用JAVASCRIPT会不会很爽。。。groovy是不错,但总觉得有些别扭
6 楼 containsoft 2009-07-26  
以前只是用js做点表单验证、提交之类的简单应用。后来认真去学了下js,才知道js原来很强大。
5 楼 spyker 2009-07-23  
还有多多debug
4 楼 spyker 2009-07-23  
虽然js很神奇
多写写就ok
3 楼 leeldy 2009-07-23  
JavaScript真是一门神奇的语言
强类型语言学多了,遇到弱类型语言真的不知道怎么办
2 楼 yesir 2009-07-23  
是本好书,就是太薄太贵啦~
现在放在枕边,像本小人书。

最后一章的跨域SSO很实用。
1 楼 02221021 2009-07-22  
是本好书,虽然去年就看过了好几次电子版的.最近还是买了一本来收藏 .

相关推荐

Global site tag (gtag.js) - Google Analytics