最近工作较为轻闲,买了一阵的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原型所指定的对象
原型可以在本对象中本重写覆盖,但同类对象并不受影响
分享到:
相关推荐
[悟透JavaScript].李战.文字版
《悟透JavaScript》这本书由李战(leadzen)撰写,旨在深入浅出地讲解JavaScript的核心概念和技术要点。本书通过生动有趣的比喻,将抽象的编程概念具象化,帮助读者更好地理解和掌握JavaScript的基础和高级特性。 #...
在《悟透JavaScript》一书中,作者李战(leadzen)引领读者深入理解JavaScript的核心概念,强调了编程世界中数据与代码的基本关系及其在JavaScript中的独特体现。本书不仅因其文笔优美、代码示例丰富而备受推崇,更...
《悟透JavaScript》是李战撰写的一本JavaScript教程,它以其独特的讲解方式和生动的语言吸引了众多读者。这本书旨在帮助读者深入理解JavaScript这门强大的编程语言,不仅覆盖了基础概念,还涉及了高级特性,使读者...
原著:李战(leadzen) 编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。
《一本悟透JavaScript》是李战先生所著的一本深入浅出的JavaScript编程书籍,它以其独特的视角和简洁明了的讲解方式,深受广大编程爱好者喜爱。这本书虽然篇幅不长,但内容丰富,旨在帮助读者快速理解并掌握...
悟透JavaScript 李战,漫画形式说明javascript禅道
在《悟透JavaScript》一书中,作者李战通过"禅棋传说"这一章节,深入浅出地介绍了如何用JavaScript编程实现围棋游戏。这个压缩包文件"weiqi"很可能包含了实现这个游戏的源代码。 1. **JavaScript基础知识**:...
悟透JavaScript>>写得太传神,印象太深刻了】 二、javascript的数据类型检测 1、万能的typeof 我们先测试一下通过typeof来获取简单数据类型。什么也别说了,上代码是王道: 代码如下: // 获取变量obj的数据类型 ...
在《JavaScript真经》这部作品中,作者李战(笔名leadzen)深入浅出地讲解了JavaScript的核心概念及其背后的哲学思考。本书不仅仅是一本技术手册,更是引导读者深入理解编程本质的一部佳作。 #### 数据与代码的哲学...