读李战《悟透JAVASCRIPT》笔记一

乱七八糟 专栏收录该内容
7 篇文章 0 订阅
最近工作较为轻闲,买了一阵的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原型所指定的对象
原型可以在本对象中本重写覆盖,但同类对象并不受影响
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值