javascript权威指南(6)随笔

         
  包装对象:存取字符串、数字或布尔值的属性时,创建的临时对象称作包装对象。它只是偶尔用来区分 
 字符串值和字符串对象,数值和数值对象,布尔值和布尔对象。通常,包装对象只是被看做是一种实现细节,而不用特别关注。由于字符串、数值、布尔值的属性都只是只读的,并且不能给他们定义新的属性,因此需要明白他们是有别于对象的。需要注意的是:可通过String()、Number()、Boolean()构造函数来显示的创建包装对象。 javascript会在必要时将包装对象转换为原始值。“==”等等运算符将原始值和包装对象视为相等。“===”全等运算符视为不相等。可以通过“typeof”运算符查看其原始值和包装对象的不同。 
 
          不可变的原始值和对象的引用:对象为引用类型,"string、number、boolean、undefined、null"为基本类型。

         Javascript的类型转换:


在实际开发中,会常见如下类型转换方式:x + " " // 转为为字符串,等价于String(x); + 3 或 x - 0 //转换为数字,等价于Number(x);!!x 转为为布尔类型,等价于Boolean(x);

判断值:null undefined "" false 0 NaN 均为false

中断循环:

break : 立即退出最内侧循环或者switch语句。当整个数组遍历完成以后会正常退出循环,如果找到需要查找的数组,则使用break语句退出循环。

for (var i = 0; i < a.length; i++) {

if (a[i] === target) break

}

严格模式(use strict)和非严格模式区别(前三点重要)

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

*在严格模式中,所有的变量都需要提前声明,如果给一个未声明的变量、函数、函数参数、catch从句参数或全局对象的属性赋值,将会抛出错误异常。

(非严格模式中,这种隐式声明的全局变量的方法是给全局对象新添加一个新属性)。

*在严格模式中,调用的函数(不是方法)中的一个值是“undefined”。

(非严格模式中,调用的函数中的this的值总是全局对象)。可以利用这个特性判断js是否支持严格模式。

var hasStrictMode = (function () {'user strcit'; return this === undefined} ()) ;

*在严格模式中,当通过call()和apply()来调用函数时,其中的this值就是通过call()和apply()传入的第一个参数

非严格模式中,null和undefined值被全局对象和转换为对象的非对象值所代替

对象属性的特性:(属性包含1个名字和4个特性)

*数据属性4个特性:值(value)、可写性(writable)、可枚举性(enumerable)、可配置性(configurable)

*存取器属性4个特性:读取(get)、写入(set)、可枚举性(enumerable)、可配置性(configurable)






猜你喜欢

转载自blog.csdn.net/u011342216/article/details/77847573