最近工作较为轻闲,买了一阵的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的教程,讲得通俗易懂,语言幽默,看了不烦
阿里软件资深架构师 李战《悟透javascript》上半部分。
原著:李战(leadzen) 编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。
悟透JavaScript 李战,漫画形式说明javascript禅道
很有趣的一本讲解javascript的书,作者李战;大神一个;书很薄,20来也,通俗易懂
网上搜到的,是李战的《悟透JAVASCRIPT》中的“禅棋传说”的代码
悟透JavaScript>>写得太传神,印象太深刻了】 二、javascript的数据类型检测 1、万能的typeof 我们先测试一下通过typeof来获取简单数据类型。什么也别说了,上代码是王道: 代码如下: // 获取变量obj的数据类型 ...
今天重温经典书籍。这一次看的是博客园李战老师写的<<悟透JavaScript>>,也是被楼猪翻看最多的技术书籍之一。
《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf《网店商品图片与视频拍摄及处理》—08商品图片处理.pdf《网店商品图片与视频拍摄及处理》—08商品图片...
可以帮助你在轻松愉快中加深对动态网页开发面向对象思想的理解,大牛李战于菩提树下修成
一种基于Docker的容器云资源调度方案,李战,彭扬,随着容器技术的兴起,Docker凭借其轻量级和标准化,迅速成为了云平台的基础解决方案,同时也促进了云平台的飞速发展。如何更加高效
键合压力对引线键合换能系统的影响,李战慧,吴运新,引线键合工艺是芯片一级封装的主要技术。现在常用的引线键合工艺是热超声引线键合技术,热超声引线键合换能系统键合过程时间短,
拧紧力矩对压电换能器性能影响的研究,李战慧,吴运新,利用等效电路法对压电换能器进行了研究,使用阻抗分析仪测试得到了108k压电换能器在1N.m到10N.m等10个拧紧力矩下的谐振频率附近的导纳