JavaScript 学习摘要(2)

debugger语句不会启动调试器。但如果调试器已经在运行中,这条语句才会真正产生一个断点。

比如: 如果使用Firefox的调试扩展插件 Firebug  ,则必须首先为待调试的网页启用Firebug,这样debugger语句才能正常工作。

严格模式和非严格模式的区别:

1.在严格模式中禁止使用with语句

2.在严格模式中,所有的变量都要声明,如果给一个未声明的变量、函数、函数参数、catch从句参数或全局对象的属性复制,将会抛出一个引用错误异常。非严格模式下,这种隐式声明的全局变量的方法是给全局对象新添加一个新属性。

3.在严格模式中,调用的函数(不是方法)中的一个this值是undefined。在非严格模式中,调用的函数中的this值总是全局对象。

4.在非严格模式下,null和undefined值被全局对象和转换为对象的非对象值所代替。在严格模式中,当通过call()和apply()来调用函数时,其中this值就是通过call()或apply()传入的第一个参数。

5.在严格模式中,给只读属性赋值和给不可扩展的对象创建新成员都将抛出一个类型错误异常。非严格下,这些操作都只是简单的操作失败,不会报错。

6.在严格模式下,传入eval()的代码不能在调用程序所在的上下文中声明变量或定义函数,但在非严格下,可以。

7.在严格模式中,函数的arguments对象拥有传入函数值的静态副本。在非严格模式中,arguments对象具有魔术般的行为,arguments里的数组元素和函数参数都是指向同一个值的引用。

8.在严格模式中,当delete运算符后跟随非法的标识符(如变量、函数、函数参数)时,将会抛出一个语法错误异常。 在非严格下,什么都不做,返回false.

9.在严格下,不允许八进制整数直接量(以0为前缀,而不是0x),在非严格下,某些实现允许。

for(var in object)statement  遍历一个对象的属性

functon  name([param[],...]){body}  声明一个函数

label: statement 给statement 指定一个名字: label

throw throw expression; 抛出异常

try  try{statements}    捕获异常

“use strict” 对脚本和函数应用严格模式

with(object) statement 扩展作用域链(不赞成使用)

对象是JavaScript的基本数据类型。对象是一种复合值:它将很多值(原始值或者其他对象)聚合在一起。可以通过名字访问这些值。对象也可看做是属性的无序集合,每个属性都是一个名/值对。属性名是字符串,因此我们可以把对象看成是从字符串到值的映射。这种基本数据结构还有很多种叫法,有些我们已经非常熟悉,比如“散列”hash,散列表hashtable,字典dictionary,关联数组associative array 。

对象不仅仅是字符串到值的映射,除了可以保持有自有的属性,JavaScript对象还可以从一个称为原型的对象继承属性。对象的方法通常是继承的属性。这种原型式继承 prototypal inheritance 是javascript核心特征。

JavaScript对象是动态的,可以新增属性也可以删除,但他们常用来模拟静态对象和静态类型语言中的结构体(struct)。有时候,它们也用做字符串的集合(忽略名/值对中的值)。

除了字符串、数字、true false null undefined之外,JavaScript中的值都是对象。

尽管字符串、数字和布尔值不是对象,但其行为和不可变对象非常相似

如果变量x是指向一个对象的引用,那么执行代码var y=x; 变量y也是指向同一个对象的引用,非这个对象的副本。通过变量y修改这个对象,也会对变量x造成影响。

对象最常见的用法是创建create 设置set 查找 query 删除delete 检测test  枚举enumerate 它的属性。

属性包括名字和值。

属性名可以是包含空字符串在内的任意字符串,但对象中不能存在两个同名的属性。值可以是任意JavaScript值,或者getter 或setter或两者都有。

除了包含属性外,每个对象还有三个对象特性 object attribute

对象的原型 prototype 指向另外一个对象,本对象的属性继承自它的原型对象。

对象的类 class是一个标识对象类型的字符串。

对象的扩展标记 extensible flag 指明了是否可以向该对象添加新属性。

inherit()函数一个用途:防止库函数无意间修改那些不受你控制的对象。

.后面  是一个以属性名称命名的简单的标识符。

[]里面  是一个计算结果为字符串的表达式,这个字符串就是属性的名字

如果一个对象的属性名是保留字,则必须用[]访问他们。

javascript 对象都是关联数组。

在C C++ JAVA 和强类型 strong typed 语言中,对象只能拥有固定数目的属性,并且这些属性名称必须提前定义好。  

delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性。

delete book.author;  //book不再有属性author








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值